vercel 59.14.0 → 59.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/add-7XFD2OHW.js +8 -0
- package/dist/chunks/add-HZC7AUBY.js +8 -0
- package/dist/chunks/add-PYUNJZ6K.js +8 -0
- package/dist/chunks/build-EFKQ6BND.js +7 -0
- package/dist/chunks/chunk-2B2MN3U5.js +8 -0
- package/dist/chunks/chunk-2H77IRPI.js +9 -0
- package/dist/chunks/chunk-2I64AYHG.js +7 -0
- package/dist/chunks/chunk-2PPXY24N.js +20 -0
- package/dist/chunks/chunk-2S6PE6GB.js +7 -0
- package/dist/chunks/{chunk-PIMIVJYK.js → chunk-3FMJYJUR.js} +7 -32
- package/dist/chunks/chunk-3IAQUNQH.js +7 -0
- package/dist/chunks/chunk-3QHJYVCY.js +7 -0
- package/dist/chunks/chunk-3QT7VOE3.js +7 -0
- package/dist/chunks/chunk-3TXEXPUW.js +7 -0
- package/dist/chunks/chunk-4MZK6JT6.js +7 -0
- package/dist/chunks/chunk-4NE5IQ25.js +7 -0
- package/dist/chunks/chunk-4PNSSS3L.js +7 -0
- package/dist/chunks/chunk-4QX77CP7.js +7 -0
- package/dist/chunks/chunk-57GHYR4Y.js +25 -0
- package/dist/chunks/chunk-5QQNYN4N.js +7 -0
- package/dist/chunks/chunk-5XJNPXQK.js +7 -0
- package/dist/chunks/chunk-6L236MNA.js +7 -0
- package/dist/chunks/chunk-6PFC3KWQ.js +7 -0
- package/dist/chunks/chunk-6QKS6QK7.js +7 -0
- package/dist/chunks/chunk-6RIQPTJA.js +8 -0
- package/dist/chunks/chunk-6TAQ6OWD.js +13 -0
- package/dist/chunks/chunk-6YAADRQB.js +9 -0
- package/dist/chunks/chunk-75CPY75D.js +15 -0
- package/dist/chunks/chunk-7HL2RPUO.js +7 -0
- package/dist/chunks/chunk-7PNYOSDU.js +9 -0
- package/dist/chunks/chunk-7R5FEXZ5.js +7 -0
- package/dist/chunks/chunk-7RMCBXBB.js +62 -0
- package/dist/chunks/chunk-7RR7MIMT.js +7 -0
- package/dist/chunks/chunk-7T6TL3GQ.js +7 -0
- package/dist/chunks/chunk-ADUYPK2G.js +13 -0
- package/dist/chunks/chunk-AFPOIDM5.js +7 -0
- package/dist/chunks/chunk-AM46JVVN.js +7 -0
- package/dist/chunks/chunk-AVSPFBLM.js +7 -0
- package/dist/chunks/chunk-B4ATVYZW.js +7 -0
- package/dist/chunks/chunk-BATE73HA.js +9 -0
- package/dist/chunks/{chunk-64IF634X.js → chunk-BRK4OB4B.js} +1 -12
- package/dist/chunks/chunk-BVH2AEFE.js +7 -0
- package/dist/chunks/chunk-CN2QZO4U.js +7 -0
- package/dist/chunks/chunk-COQGD2EI.js +8 -0
- package/dist/chunks/chunk-CUAIEGNE.js +7 -0
- package/dist/chunks/chunk-CVKB54WW.js +7 -0
- package/dist/chunks/{chunk-A3NYPUKZ.js → chunk-CZSOZKHX.js} +1 -11
- package/dist/chunks/chunk-D4MW3RDW.js +7 -0
- package/dist/chunks/chunk-DFVNL5ML.js +7 -0
- package/dist/chunks/chunk-EE3FVJLV.js +16 -0
- package/dist/chunks/chunk-EGMJRU5P.js +28 -0
- package/dist/chunks/chunk-ENBTTYJR.js +7 -0
- package/dist/chunks/chunk-ENS6KX2F.js +7 -0
- package/dist/chunks/chunk-EOBD4ZEG.js +8 -0
- package/dist/chunks/chunk-EOCTK4EA.js +7 -0
- package/dist/chunks/chunk-EQ52F4LH.js +7 -0
- package/dist/chunks/chunk-ETV3C2CV.js +7 -0
- package/dist/chunks/chunk-EVZRQGNK.js +7 -0
- package/dist/chunks/chunk-F2ZWW2IO.js +8 -0
- package/dist/chunks/chunk-FAW6NBLQ.js +7 -0
- package/dist/chunks/chunk-FI772UVH.js +7 -0
- package/dist/chunks/chunk-FKCOBJFH.js +7 -0
- package/dist/chunks/chunk-FVGESGJI.js +45 -0
- package/dist/chunks/chunk-G5FC5ZCO.js +9 -0
- package/dist/chunks/chunk-G6CTAHKY.js +39 -0
- package/dist/chunks/chunk-G7Y77DFH.js +7 -0
- package/dist/chunks/chunk-GHAY4PSD.js +7 -0
- package/dist/chunks/chunk-GHM7V3GG.js +7 -0
- package/dist/chunks/chunk-GRNTLNC7.js +7 -0
- package/dist/chunks/chunk-GTRGQIY2.js +10 -0
- package/dist/chunks/chunk-GU6VIFR5.js +7 -0
- package/dist/chunks/{constants-YMCRE6IG.js → chunk-GZNDA6SV.js} +2 -9
- package/dist/chunks/chunk-HBFPLBTX.js +10 -0
- package/dist/chunks/chunk-HEGJZJO7.js +7 -0
- package/dist/chunks/chunk-HSJ6AHWG.js +12 -0
- package/dist/chunks/chunk-HTC6KO2B.js +7 -0
- package/dist/chunks/chunk-HVUHCRZB.js +18 -0
- package/dist/chunks/chunk-HZZ5L472.js +7 -0
- package/dist/chunks/chunk-IVSSTHB6.js +7 -0
- package/dist/chunks/chunk-IVWPQYIH.js +7 -0
- package/dist/chunks/chunk-J3U3L45Y.js +7 -0
- package/dist/chunks/chunk-JAJW3P42.js +7 -0
- package/dist/chunks/chunk-JEIMW3CO.js +7 -0
- package/dist/chunks/chunk-JIYY3B4C.js +7 -0
- package/dist/chunks/chunk-JKTQV2QJ.js +7 -0
- package/dist/chunks/chunk-JTVVBRW7.js +7 -0
- package/dist/chunks/chunk-JYAUUIR4.js +7 -0
- package/dist/chunks/chunk-JZRMH5UA.js +7 -0
- package/dist/chunks/chunk-K2RAW5DI.js +10 -0
- package/dist/chunks/chunk-K3KJZLBD.js +7 -0
- package/dist/chunks/chunk-KK4AJES5.js +36 -0
- package/dist/chunks/chunk-KKS7XWEX.js +7 -0
- package/dist/chunks/chunk-KNEWCUWF.js +14 -0
- package/dist/chunks/chunk-KO733OJG.js +9 -0
- package/dist/chunks/chunk-L243RUIR.js +19 -0
- package/dist/chunks/chunk-L3JDEHCQ.js +7 -0
- package/dist/chunks/chunk-LDM3SQAU.js +13 -0
- package/dist/chunks/chunk-LNPMDXBJ.js +7 -0
- package/dist/chunks/chunk-M2W3HKV3.js +23 -0
- package/dist/chunks/chunk-M2XARQBF.js +9 -0
- package/dist/chunks/chunk-M5AV545M.js +7 -0
- package/dist/chunks/chunk-MAVRGZQP.js +7 -0
- package/dist/chunks/chunk-MBL6TXEJ.js +7 -0
- package/dist/chunks/chunk-MEAY2K5Z.js +11 -0
- package/dist/chunks/chunk-MY4MONOH.js +7 -0
- package/dist/chunks/chunk-N3N5UHIL.js +7 -0
- package/dist/chunks/chunk-N3ZZ7FHQ.js +7 -0
- package/dist/chunks/chunk-N6CNMMSZ.js +7 -0
- package/dist/chunks/chunk-NBVY237X.js +7 -0
- package/dist/chunks/chunk-NGNOUPWS.js +25 -0
- package/dist/chunks/chunk-NHTF332K.js +7 -0
- package/dist/chunks/chunk-NNP5NITU.js +15 -0
- package/dist/chunks/chunk-NS4FH2TY.js +11 -0
- package/dist/chunks/chunk-NUGLE4QY.js +11 -0
- package/dist/chunks/chunk-NWFHHUKZ.js +7 -0
- package/dist/chunks/chunk-O7G3CZ42.js +7 -0
- package/dist/chunks/chunk-OD6RZ3XZ.js +8 -0
- package/dist/chunks/chunk-OHDEHZLX.js +7 -0
- package/dist/chunks/chunk-OK3S6KFX.js +16 -0
- package/dist/chunks/chunk-OKZDOANA.js +23 -0
- package/dist/chunks/chunk-OSCCYU74.js +7 -0
- package/dist/chunks/chunk-OUHPDA7Q.js +7 -0
- package/dist/chunks/chunk-P2O5DOYE.js +7 -0
- package/dist/chunks/chunk-PHW54NU5.js +13 -0
- package/dist/chunks/chunk-PPCFQQSU.js +7 -0
- package/dist/chunks/chunk-QGIGNMII.js +8 -0
- package/dist/chunks/chunk-QGIQK47P.js +7 -0
- package/dist/chunks/chunk-QHJLRTVY.js +7 -0
- package/dist/chunks/{chunk-2473DUBR.js → chunk-QR7QPUFN.js} +1 -9
- package/dist/chunks/chunk-QTKJC2O5.js +7 -0
- package/dist/chunks/chunk-R2TGGVCT.js +19 -0
- package/dist/chunks/chunk-RAIBQIKB.js +7 -0
- package/dist/chunks/chunk-RCTYVKM5.js +16 -0
- package/dist/chunks/chunk-RKAUVPOQ.js +86 -0
- package/dist/chunks/chunk-S5CEIACD.js +7 -0
- package/dist/chunks/chunk-SGWVKRSR.js +8 -0
- package/dist/chunks/chunk-SOJCELXH.js +7 -0
- package/dist/chunks/chunk-SXUEGVWB.js +7 -0
- package/dist/chunks/{chunk-GGPE5377.js → chunk-T3GQAMBJ.js} +1 -9
- package/dist/chunks/chunk-T52FMXWC.js +7 -0
- package/dist/chunks/chunk-TG2RCYTH.js +7 -0
- package/dist/chunks/chunk-TJCIHDPZ.js +9 -0
- package/dist/chunks/chunk-TKBXN4H3.js +9 -0
- package/dist/chunks/chunk-TRTEXGVN.js +7 -0
- package/dist/chunks/chunk-TXELFFNK.js +15 -0
- package/dist/chunks/chunk-U56NHYAH.js +7 -0
- package/dist/chunks/chunk-U7KCDTCH.js +12 -0
- package/dist/chunks/chunk-UETTIYUQ.js +8 -0
- package/dist/chunks/chunk-UGMZQZJE.js +24 -0
- package/dist/chunks/chunk-ULLWCOYC.js +7 -0
- package/dist/chunks/chunk-UXTHEQVJ.js +21 -0
- package/dist/chunks/chunk-VLZ47RWM.js +44 -0
- package/dist/chunks/chunk-WKZ6JSGZ.js +7 -0
- package/dist/chunks/chunk-WPS6JZF6.js +7 -0
- package/dist/chunks/chunk-WRILLB46.js +7 -0
- package/dist/chunks/chunk-WUZD4KBL.js +7 -0
- package/dist/chunks/chunk-XCJDGQO7.js +7 -0
- package/dist/chunks/{pkg-56KRLZ5K.js → chunk-XD2LZRBS.js} +1 -7
- package/dist/chunks/chunk-XFVGX5HG.js +7 -0
- package/dist/chunks/chunk-XHOGOH6N.js +7 -0
- package/dist/chunks/{update-route-version-E3V47KNI.js → chunk-XPXOV5UO.js} +1 -7
- package/dist/chunks/chunk-XQ73QIQ3.js +7 -0
- package/dist/chunks/chunk-XSVBYDYI.js +8 -0
- package/dist/chunks/chunk-YKZLKOOD.js +12 -0
- package/dist/chunks/chunk-YMVDWVMO.js +7 -0
- package/dist/chunks/chunk-YPTLSODC.js +7 -0
- package/dist/chunks/chunk-YV6CTDHR.js +7 -0
- package/dist/chunks/chunk-Z6Y55QJW.js +23 -0
- package/dist/chunks/chunk-ZDX75YNZ.js +7 -0
- package/dist/chunks/chunk-ZIPVX7LD.js +7 -0
- package/dist/chunks/chunk-ZKYS7EAB.js +7 -0
- package/dist/chunks/chunk-ZT6KDLLY.js +20 -0
- package/dist/chunks/chunk-ZXE4XYIV.js +7 -0
- package/dist/chunks/chunk-ZZQRMRWD.js +20 -0
- package/dist/chunks/cjs-GOQHXIHX.js +54 -0
- package/dist/chunks/clear-5NQAVWIF.js +8 -0
- package/dist/chunks/compile-vercel-config-6J2XUFRK.js +7 -0
- package/dist/chunks/config-CKYRXZXL.js +7 -0
- package/dist/chunks/config-VNUY4RJ4.js +8 -0
- package/dist/chunks/connect-git-provider-GIU5WZ52.js +7 -0
- package/dist/chunks/constants-G4UYVLOF.js +7 -0
- package/dist/chunks/create-project-SRQGD4JY.js +7 -0
- package/dist/chunks/delete-GTXXCSKQ.js +10 -0
- package/dist/chunks/delete-HRJEO4MI.js +9 -0
- package/dist/chunks/detect-projects-2GNCZ4CS.js +7 -0
- package/dist/chunks/detect-services-GHILEGNU.js +7 -0
- package/dist/chunks/disable-RWCRVG5O.js +7 -0
- package/dist/chunks/discard-SHFIYCJU.js +14 -0
- package/dist/chunks/edit-DMO3NSO2.js +9 -0
- package/dist/chunks/edit-EVQI2RSS.js +8 -0
- package/dist/chunks/enable-AWDU6STD.js +7 -0
- package/dist/chunks/esm-7HVUFWMN.js +7 -0
- package/dist/chunks/esm-BZBEM7YA.js +7 -0
- package/dist/chunks/esm-CXICLFA3.js +9 -0
- package/dist/chunks/esm-HDEHVK7I.js +9 -0
- package/dist/chunks/esm-NQRLKALI.js +20 -0
- package/dist/chunks/esm-SZZI53W7.js +7 -0
- package/dist/chunks/esm-WGJFGCLK.js +7 -0
- package/dist/chunks/exec-4AISDHUV.js +16372 -0
- package/dist/chunks/export-IQKTA4RS.js +19 -0
- package/dist/chunks/fetch-proxy-AEAWC6MD.js +7 -0
- package/dist/chunks/future-E2FHKPJN.js +7 -0
- package/dist/chunks/generate-cert-for-deploy-VKOWC4PZ.js +7 -0
- package/dist/chunks/image-LDFYNOCA.js +7 -0
- package/dist/chunks/import-builders-P7CXSX2D.js +7 -0
- package/dist/chunks/inspect-3N47ODIH.js +15 -0
- package/dist/chunks/inspect-53SGDDAH.js +20 -0
- package/dist/chunks/inspect-5INZDUQS.js +19 -0
- package/dist/chunks/inspect-WMT2M335.js +9 -0
- package/dist/chunks/inspect-Y6BUCOUV.js +13 -0
- package/dist/chunks/list-BIAPHKFM.js +11 -0
- package/dist/chunks/list-DMOCRRSE.js +16 -0
- package/dist/chunks/list-K5J7OULR.js +10 -0
- package/dist/chunks/login-DEAEVUHM.js +7 -0
- package/dist/chunks/login-SRVNHI4Y.js +9 -0
- package/dist/chunks/logs-GK7CJBYY.js +7 -0
- package/dist/chunks/ls-7ZX6DCJW.js +12 -0
- package/dist/chunks/ls-AJWN5ZR4.js +12 -0
- package/dist/chunks/ls-BFJWCRLZ.js +12 -0
- package/dist/chunks/ls-KGIE6HCO.js +12 -0
- package/dist/chunks/ls-UVKTHBTE.js +8 -0
- package/dist/chunks/ls-WEG45IOC.js +8 -0
- package/dist/chunks/native-self-update-KOJVRMHR.js +7 -0
- package/dist/chunks/open-OEWPI5G6.js +7 -0
- package/dist/chunks/openapi-MO5HYMHR.js +7 -0
- package/dist/chunks/permissions-EPQBQFE3.js +7 -0
- package/dist/chunks/pkg-YFU67U7I.js +7 -0
- package/dist/chunks/prompt-missing-credentials-IUHLYSQU.js +7 -0
- package/dist/chunks/publish-JG7MEPWT.js +15 -0
- package/dist/chunks/pull-MRKXG6TO.js +7 -0
- package/dist/chunks/purchase-domain-if-available-O5ARXEZ5.js +7 -0
- package/dist/chunks/push-XOXJDFYO.js +7 -0
- package/dist/chunks/query-AL7C6WV2.js +12 -0
- package/dist/chunks/reauthenticate-SH4XR7NH.js +7 -0
- package/dist/chunks/reorder-5DMRFDBY.js +10 -0
- package/dist/chunks/reply-WSRNZWFD.js +9 -0
- package/dist/chunks/repo-info-to-url-SK3VX6UL.js +7 -0
- package/dist/chunks/resolve-YJUXQVOZ.js +12 -0
- package/dist/chunks/resolve-deployment-framework-preset-XF3NJIDS.js +7 -0
- package/dist/chunks/restore-QT3DBGKU.js +16 -0
- package/dist/chunks/rm-MHPIUEZ5.js +8 -0
- package/dist/chunks/rm-MVZFU6RG.js +8 -0
- package/dist/chunks/rm-PXR4J2US.js +8 -0
- package/dist/chunks/rm-WB2AIP3N.js +8 -0
- package/dist/chunks/rm-XRP6MRUT.js +8 -0
- package/dist/chunks/routes-5DERZV5M.js +7 -0
- package/dist/chunks/rule-inspect-TT3DRGCS.js +8 -0
- package/dist/chunks/rules-B5GW4KJH.js +7 -0
- package/dist/chunks/schema-JY5QTZOG.js +14 -0
- package/dist/chunks/schema-KCNKVFT3.js +44 -0
- package/dist/chunks/select-org-KSCYSESV.js +7 -0
- package/dist/chunks/set-7BANEWEL.js +7 -0
- package/dist/chunks/setup-and-link-ZAV3EFGC.js +7 -0
- package/dist/chunks/slugify-O5DBATYT.js +7 -0
- package/dist/chunks/stamp-OX4YO3KY.js +7 -0
- package/dist/chunks/tags-VZR66NUC.js +7 -0
- package/dist/chunks/types-LRXQEDYI.js +14 -0
- package/dist/chunks/update-RBFNNSWE.js +8 -0
- package/dist/chunks/update-route-version-XZAFPQJC.js +7 -0
- package/dist/chunks/utils-B5ZTMQKY.js +58 -0
- package/dist/chunks/vlt-builder-importer-YVCYYRVV.js +11 -0
- package/dist/commands/build/index.js +24 -4925
- package/dist/commands/deploy/index.js +43 -2875
- package/dist/commands/dev/index.js +56 -23857
- package/dist/commands/env/index.js +26 -3411
- package/dist/commands/link/index.js +4 -284
- package/dist/commands/list/index.js +6 -566
- package/dist/commands-bulk.js +1187 -87691
- package/dist/help.js +1 -8
- package/dist/index.js +19 -2591
- package/dist/version.mjs +1 -1
- package/package.json +50 -51
- package/dist/chunks/add-EQZRT4XL.js +0 -221
- package/dist/chunks/add-KMDROZC3.js +0 -196
- package/dist/chunks/add-QPJ3XMBV.js +0 -145
- package/dist/chunks/build-W4HPTAOB.js +0 -251
- package/dist/chunks/chunk-26CU4Q3C.js +0 -598
- package/dist/chunks/chunk-2HSQ7YUK.js +0 -93
- package/dist/chunks/chunk-2JIX6UMI.js +0 -4626
- package/dist/chunks/chunk-2LCFOK66.js +0 -1536
- package/dist/chunks/chunk-332LMJLZ.js +0 -16014
- package/dist/chunks/chunk-3HZLXCVL.js +0 -137
- package/dist/chunks/chunk-3VM7HWF6.js +0 -104
- package/dist/chunks/chunk-3ZE5CFVM.js +0 -346
- package/dist/chunks/chunk-4IALDGB7.js +0 -22
- package/dist/chunks/chunk-4KD5BYHB.js +0 -127
- package/dist/chunks/chunk-4TUMNBEE.js +0 -231
- package/dist/chunks/chunk-4WG2MYCI.js +0 -163
- package/dist/chunks/chunk-57RHXXXG.js +0 -150
- package/dist/chunks/chunk-5AJPMLDV.js +0 -28
- package/dist/chunks/chunk-5EIV6LPQ.js +0 -305
- package/dist/chunks/chunk-5NF5HOBJ.js +0 -1854
- package/dist/chunks/chunk-653QRQAD.js +0 -417
- package/dist/chunks/chunk-67CRVWDF.js +0 -81
- package/dist/chunks/chunk-6E6KPBXY.js +0 -43
- package/dist/chunks/chunk-75VENWDN.js +0 -1892
- package/dist/chunks/chunk-7MRDIPJY.js +0 -107
- package/dist/chunks/chunk-7NRNFV77.js +0 -875
- package/dist/chunks/chunk-7Q45OKWR.js +0 -149
- package/dist/chunks/chunk-AHU7WNL2.js +0 -24
- package/dist/chunks/chunk-AINIBIP4.js +0 -39
- package/dist/chunks/chunk-AJ5HUOWB.js +0 -14059
- package/dist/chunks/chunk-AKLTIZCU.js +0 -46
- package/dist/chunks/chunk-AQ6P3IGG.js +0 -49
- package/dist/chunks/chunk-B5NH7SLK.js +0 -324
- package/dist/chunks/chunk-B5XLQKHI.js +0 -849
- package/dist/chunks/chunk-BEQV3X2L.js +0 -86
- package/dist/chunks/chunk-CAHP7UGE.js +0 -79
- package/dist/chunks/chunk-CFDDM4TX.js +0 -13618
- package/dist/chunks/chunk-CJV7J7B5.js +0 -314
- package/dist/chunks/chunk-CV5YC2EN.js +0 -867
- package/dist/chunks/chunk-CXFY6A6W.js +0 -255
- package/dist/chunks/chunk-D5SMZXVO.js +0 -233
- package/dist/chunks/chunk-E336ZXPP.js +0 -43
- package/dist/chunks/chunk-EDMW7SBH.js +0 -246
- package/dist/chunks/chunk-EFYMIIER.js +0 -40
- package/dist/chunks/chunk-EKPSCRJZ.js +0 -26
- package/dist/chunks/chunk-EOZFDJSY.js +0 -18
- package/dist/chunks/chunk-EWBCSDTM.js +0 -1708
- package/dist/chunks/chunk-EZKW5YJ2.js +0 -177
- package/dist/chunks/chunk-F2QLCXCF.js +0 -2399
- package/dist/chunks/chunk-FGDKMNEN.js +0 -21
- package/dist/chunks/chunk-FRVG4OW3.js +0 -7438
- package/dist/chunks/chunk-FVF4UHDM.js +0 -1288
- package/dist/chunks/chunk-G5FBSUL4.js +0 -822
- package/dist/chunks/chunk-GDOUDU6O.js +0 -74
- package/dist/chunks/chunk-GGP5R3FU.js +0 -129
- package/dist/chunks/chunk-GVNCVKCI.js +0 -68
- package/dist/chunks/chunk-GY5I4AYD.js +0 -122
- package/dist/chunks/chunk-GZLPFESR.js +0 -48
- package/dist/chunks/chunk-HB4UKFDO.js +0 -1295
- package/dist/chunks/chunk-HD4DR3DA.js +0 -818
- package/dist/chunks/chunk-HKHXKSXQ.js +0 -152
- package/dist/chunks/chunk-HM24ZWQL.js +0 -174
- package/dist/chunks/chunk-HRXRELD3.js +0 -338
- package/dist/chunks/chunk-IB5L4LKZ.js +0 -1082
- package/dist/chunks/chunk-IIMSID24.js +0 -104
- package/dist/chunks/chunk-J7JKZM4T.js +0 -58
- package/dist/chunks/chunk-JC2O346E.js +0 -137
- package/dist/chunks/chunk-JSD4EZL3.js +0 -34
- package/dist/chunks/chunk-JZXJZX7O.js +0 -257
- package/dist/chunks/chunk-K3RED3VO.js +0 -566
- package/dist/chunks/chunk-KFWQ3EFH.js +0 -151
- package/dist/chunks/chunk-KW7BS25T.js +0 -466
- package/dist/chunks/chunk-KXDWXXJH.js +0 -70
- package/dist/chunks/chunk-LERVNZTD.js +0 -90
- package/dist/chunks/chunk-LYAAQDNS.js +0 -242
- package/dist/chunks/chunk-M5I6INNF.js +0 -61
- package/dist/chunks/chunk-N6HP5BLI.js +0 -18190
- package/dist/chunks/chunk-ND5CF2H3.js +0 -53
- package/dist/chunks/chunk-NFU4XJIR.js +0 -120
- package/dist/chunks/chunk-NW34PW6V.js +0 -1772
- package/dist/chunks/chunk-OAMU5QO6.js +0 -18
- package/dist/chunks/chunk-OCIZ6ZYA.js +0 -253
- package/dist/chunks/chunk-ORQZKIIB.js +0 -2914
- package/dist/chunks/chunk-P3SKP5WM.js +0 -27
- package/dist/chunks/chunk-P4QNYOFB.js +0 -96
- package/dist/chunks/chunk-P7VSBDR4.js +0 -827
- package/dist/chunks/chunk-PEC3CQSK.js +0 -90
- package/dist/chunks/chunk-PMSMUMUO.js +0 -30
- package/dist/chunks/chunk-PNGVSHR3.js +0 -40
- package/dist/chunks/chunk-POOO7W47.js +0 -916
- package/dist/chunks/chunk-PRWJUY5U.js +0 -848
- package/dist/chunks/chunk-Q2DGFCO7.js +0 -579
- package/dist/chunks/chunk-RBF2NPUP.js +0 -577
- package/dist/chunks/chunk-RBIFXFZX.js +0 -52
- package/dist/chunks/chunk-RDTRWLWB.js +0 -11441
- package/dist/chunks/chunk-RN6V5ODW.js +0 -114
- package/dist/chunks/chunk-RNSMTWA6.js +0 -122
- package/dist/chunks/chunk-RTJASENB.js +0 -59
- package/dist/chunks/chunk-RVBZ64EQ.js +0 -52
- package/dist/chunks/chunk-S7KYDPEM.js +0 -1564
- package/dist/chunks/chunk-SLPSPYVR.js +0 -334
- package/dist/chunks/chunk-SM3F3PYJ.js +0 -522
- package/dist/chunks/chunk-TO7QZGYK.js +0 -105
- package/dist/chunks/chunk-TSBUHSN7.js +0 -3495
- package/dist/chunks/chunk-TSFWMUCY.js +0 -506
- package/dist/chunks/chunk-TZ2YI2VH.js +0 -87
- package/dist/chunks/chunk-UG2WOB5L.js +0 -150
- package/dist/chunks/chunk-UNKHOYMF.js +0 -559
- package/dist/chunks/chunk-UOVWUSLG.js +0 -2099
- package/dist/chunks/chunk-V4RMJKQP.js +0 -36
- package/dist/chunks/chunk-VGIMO3ZK.js +0 -17
- package/dist/chunks/chunk-VGKSIKCC.js +0 -92
- package/dist/chunks/chunk-VP5Y3SZG.js +0 -106
- package/dist/chunks/chunk-VXYGCOKL.js +0 -28
- package/dist/chunks/chunk-W7FGI2GZ.js +0 -233
- package/dist/chunks/chunk-WGGABYO5.js +0 -31
- package/dist/chunks/chunk-XDGOOW3K.js +0 -60
- package/dist/chunks/chunk-XFF5TGRA.js +0 -303
- package/dist/chunks/chunk-XNIZGCN5.js +0 -58
- package/dist/chunks/chunk-XPJLPUKO.js +0 -117
- package/dist/chunks/chunk-XUAWTW4W.js +0 -467
- package/dist/chunks/chunk-YPQSDAEW.js +0 -29
- package/dist/chunks/chunk-YS76T533.js +0 -270
- package/dist/chunks/chunk-ZDU2NODC.js +0 -104
- package/dist/chunks/chunk-ZW6HETRE.js +0 -97
- package/dist/chunks/cjs-DV4RM7XU.js +0 -20743
- package/dist/chunks/clear-4IACMLFU.js +0 -141
- package/dist/chunks/compile-vercel-config-PQQ3OCLV.js +0 -33
- package/dist/chunks/config-BQQKMQBP.js +0 -168
- package/dist/chunks/config-OCPNHXQL.js +0 -127
- package/dist/chunks/delete-HRKIYPCO.js +0 -159
- package/dist/chunks/delete-P2UL3KTU.js +0 -226
- package/dist/chunks/detect-projects-ODNU4PK2.js +0 -18
- package/dist/chunks/detect-services-U7QGT7VO.js +0 -40
- package/dist/chunks/disable-3NYMICQ3.js +0 -198
- package/dist/chunks/discard-RNVEJUK3.js +0 -145
- package/dist/chunks/edit-63S2RQHR.js +0 -162
- package/dist/chunks/edit-CTENFZ7H.js +0 -647
- package/dist/chunks/enable-WILWXAHV.js +0 -204
- package/dist/chunks/exec-4IPHZ55G.js +0 -1291
- package/dist/chunks/export-YHGV3EPK.js +0 -177
- package/dist/chunks/fetch-proxy-R3JZNXBZ.js +0 -99
- package/dist/chunks/image-MWKS2YMB.js +0 -75
- package/dist/chunks/import-builders-H55X5VYD.js +0 -39
- package/dist/chunks/inspect-JTJMK6TO.js +0 -596
- package/dist/chunks/inspect-KBIPLMGR.js +0 -216
- package/dist/chunks/inspect-OP26FDBY.js +0 -171
- package/dist/chunks/inspect-SW4UMWTB.js +0 -175
- package/dist/chunks/inspect-WPLZPVBO.js +0 -145
- package/dist/chunks/list-HE7DWAWH.js +0 -387
- package/dist/chunks/list-OUG7WCT7.js +0 -404
- package/dist/chunks/list-QUSEURJZ.js +0 -426
- package/dist/chunks/login-MIIQJVF3.js +0 -233
- package/dist/chunks/ls-24N3DUK4.js +0 -183
- package/dist/chunks/ls-3Y7KEFKT.js +0 -175
- package/dist/chunks/ls-75F5HIJ5.js +0 -188
- package/dist/chunks/ls-REN6X2X5.js +0 -204
- package/dist/chunks/ls-W4STUDXK.js +0 -223
- package/dist/chunks/ls-Z4CTSD6C.js +0 -210
- package/dist/chunks/open-ARMCLPBK.js +0 -116
- package/dist/chunks/permissions-JKI67F62.js +0 -99
- package/dist/chunks/publish-SMSQ7OX2.js +0 -155
- package/dist/chunks/pull-4QZJZELD.js +0 -45
- package/dist/chunks/push-T6IYQY2J.js +0 -191
- package/dist/chunks/query-CP3JK5LW.js +0 -725
- package/dist/chunks/reorder-RAWKFGLV.js +0 -412
- package/dist/chunks/reply-235UHUD4.js +0 -176
- package/dist/chunks/resolve-5KCLN7QV.js +0 -237
- package/dist/chunks/resolve-deployment-framework-preset-NPE6RLV3.js +0 -36
- package/dist/chunks/restore-D24WAUAN.js +0 -252
- package/dist/chunks/rm-DBQDXSOC.js +0 -162
- package/dist/chunks/rm-G5INO77R.js +0 -148
- package/dist/chunks/rm-NLKSEKZ5.js +0 -195
- package/dist/chunks/rm-QV76CJA4.js +0 -322
- package/dist/chunks/rm-TZ4PDDUK.js +0 -147
- package/dist/chunks/routes-QVMBXOSX.js +0 -24
- package/dist/chunks/rule-inspect-76MC7I2D.js +0 -123
- package/dist/chunks/rules-IDUXVTPG.js +0 -89
- package/dist/chunks/schema-AV6BHGKY.js +0 -237
- package/dist/chunks/schema-QJVQTNB4.js +0 -381
- package/dist/chunks/set-L5NFQSCF.js +0 -250
- package/dist/chunks/setup-and-link-USSVDKCM.js +0 -65
- package/dist/chunks/stamp-AA7R3MZS.js +0 -16
- package/dist/chunks/tags-2NLUU4EC.js +0 -69
- package/dist/chunks/types-4GAJ7XQQ.js +0 -116
- package/dist/chunks/update-WGLBB65M.js +0 -224
- package/dist/chunks/vlt-builder-importer-USCFHWPL.js +0 -322
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'node:url';
|
|
3
|
+
import { dirname as __dirname_ } from 'node:path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __dirname_(__filename);
|
|
7
|
+
import{__commonJS,__require}from"./chunk-6L236MNA.js";var require_is=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/is.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var objectToString=Object.prototype.toString;function isError(wat){switch(objectToString.call(wat)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return isInstanceOf(wat,Error)}}function isBuiltin(wat,className){return objectToString.call(wat)===`[object ${className}]`}function isErrorEvent(wat){return isBuiltin(wat,"ErrorEvent")}function isDOMError(wat){return isBuiltin(wat,"DOMError")}function isDOMException(wat){return isBuiltin(wat,"DOMException")}function isString(wat){return isBuiltin(wat,"String")}function isParameterizedString(wat){return typeof wat=="object"&&wat!==null&&"__sentry_template_string__"in wat&&"__sentry_template_values__"in wat}function isPrimitive(wat){return wat===null||isParameterizedString(wat)||typeof wat!="object"&&typeof wat!="function"}function isPlainObject(wat){return isBuiltin(wat,"Object")}function isEvent(wat){return typeof Event<"u"&&isInstanceOf(wat,Event)}function isElement(wat){return typeof Element<"u"&&isInstanceOf(wat,Element)}function isRegExp(wat){return isBuiltin(wat,"RegExp")}function isThenable(wat){return!!(wat&&wat.then&&typeof wat.then=="function")}function isSyntheticEvent(wat){return isPlainObject(wat)&&"nativeEvent"in wat&&"preventDefault"in wat&&"stopPropagation"in wat}function isNaN2(wat){return typeof wat=="number"&&wat!==wat}function isInstanceOf(wat,base){try{return wat instanceof base}catch{return!1}}function isVueViewModel(wat){return!!(typeof wat=="object"&&wat!==null&&(wat.__isVue||wat._isVue))}exports.isDOMError=isDOMError;exports.isDOMException=isDOMException;exports.isElement=isElement;exports.isError=isError;exports.isErrorEvent=isErrorEvent;exports.isEvent=isEvent;exports.isInstanceOf=isInstanceOf;exports.isNaN=isNaN2;exports.isParameterizedString=isParameterizedString;exports.isPlainObject=isPlainObject;exports.isPrimitive=isPrimitive;exports.isRegExp=isRegExp;exports.isString=isString;exports.isSyntheticEvent=isSyntheticEvent;exports.isThenable=isThenable;exports.isVueViewModel=isVueViewModel}});var require_string=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/string.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is();function truncate(str,max=0){return typeof str!="string"||max===0||str.length<=max?str:`${str.slice(0,max)}...`}function snipLine(line,colno){let newLine=line,lineLength=newLine.length;if(lineLength<=150)return newLine;colno>lineLength&&(colno=lineLength);let start=Math.max(colno-60,0);start<5&&(start=0);let end=Math.min(start+140,lineLength);return end>lineLength-5&&(end=lineLength),end===lineLength&&(start=Math.max(end-140,0)),newLine=newLine.slice(start,end),start>0&&(newLine=`'{snip} ${newLine}`),end<lineLength&&(newLine+=" {snip}"),newLine}function safeJoin(input,delimiter){if(!Array.isArray(input))return"";let output=[];for(let i=0;i<input.length;i++){let value=input[i];try{is.isVueViewModel(value)?output.push("[VueViewModel]"):output.push(String(value))}catch{output.push("[value cannot be serialized]")}}return output.join(delimiter)}function isMatchingPattern(value,pattern,requireExactStringMatch=!1){return is.isString(value)?is.isRegExp(pattern)?pattern.test(value):is.isString(pattern)?requireExactStringMatch?value===pattern:value.includes(pattern):!1:!1}function stringMatchesSomePattern(testString,patterns=[],requireExactStringMatch=!1){return patterns.some(pattern=>isMatchingPattern(testString,pattern,requireExactStringMatch))}exports.isMatchingPattern=isMatchingPattern;exports.safeJoin=safeJoin;exports.snipLine=snipLine;exports.stringMatchesSomePattern=stringMatchesSomePattern;exports.truncate=truncate}});var require_aggregate_errors=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/aggregate-errors.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),string=require_string();function applyAggregateErrorsToEvent(exceptionFromErrorImplementation,parser,maxValueLimit=250,key,limit,event,hint){if(!event.exception||!event.exception.values||!hint||!is.isInstanceOf(hint.originalException,Error))return;let originalException=event.exception.values.length>0?event.exception.values[event.exception.values.length-1]:void 0;originalException&&(event.exception.values=truncateAggregateExceptions(aggregateExceptionsFromError(exceptionFromErrorImplementation,parser,limit,hint.originalException,key,event.exception.values,originalException,0),maxValueLimit))}function aggregateExceptionsFromError(exceptionFromErrorImplementation,parser,limit,error,key,prevExceptions,exception,exceptionId){if(prevExceptions.length>=limit+1)return prevExceptions;let newExceptions=[...prevExceptions];if(is.isInstanceOf(error[key],Error)){applyExceptionGroupFieldsForParentException(exception,exceptionId);let newException=exceptionFromErrorImplementation(parser,error[key]),newExceptionId=newExceptions.length;applyExceptionGroupFieldsForChildException(newException,key,newExceptionId,exceptionId),newExceptions=aggregateExceptionsFromError(exceptionFromErrorImplementation,parser,limit,error[key],key,[newException,...newExceptions],newException,newExceptionId)}return Array.isArray(error.errors)&&error.errors.forEach((childError,i)=>{if(is.isInstanceOf(childError,Error)){applyExceptionGroupFieldsForParentException(exception,exceptionId);let newException=exceptionFromErrorImplementation(parser,childError),newExceptionId=newExceptions.length;applyExceptionGroupFieldsForChildException(newException,`errors[${i}]`,newExceptionId,exceptionId),newExceptions=aggregateExceptionsFromError(exceptionFromErrorImplementation,parser,limit,childError,key,[newException,...newExceptions],newException,newExceptionId)}}),newExceptions}function applyExceptionGroupFieldsForParentException(exception,exceptionId){exception.mechanism=exception.mechanism||{type:"generic",handled:!0},exception.mechanism={...exception.mechanism,...exception.type==="AggregateError"&&{is_exception_group:!0},exception_id:exceptionId}}function applyExceptionGroupFieldsForChildException(exception,source,exceptionId,parentId){exception.mechanism=exception.mechanism||{type:"generic",handled:!0},exception.mechanism={...exception.mechanism,type:"chained",source,exception_id:exceptionId,parent_id:parentId}}function truncateAggregateExceptions(exceptions,maxValueLength){return exceptions.map(exception=>(exception.value&&(exception.value=string.truncate(exception.value,maxValueLength)),exception))}exports.applyAggregateErrorsToEvent=applyAggregateErrorsToEvent}});var require_worldwide=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/worldwide.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function isGlobalObj(obj){return obj&&obj.Math==Math?obj:void 0}var GLOBAL_OBJ=typeof globalThis=="object"&&isGlobalObj(globalThis)||typeof window=="object"&&isGlobalObj(window)||typeof self=="object"&&isGlobalObj(self)||typeof global=="object"&&isGlobalObj(global)||function(){return this}()||{};function getGlobalObject(){return GLOBAL_OBJ}function getGlobalSingleton(name,creator,obj){let gbl=obj||GLOBAL_OBJ,__SENTRY__=gbl.__SENTRY__=gbl.__SENTRY__||{};return __SENTRY__[name]||(__SENTRY__[name]=creator())}exports.GLOBAL_OBJ=GLOBAL_OBJ;exports.getGlobalObject=getGlobalObject;exports.getGlobalSingleton=getGlobalSingleton}});var require_browser=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/browser.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),worldwide=require_worldwide(),WINDOW=worldwide.getGlobalObject(),DEFAULT_MAX_STRING_LENGTH=80;function htmlTreeAsString(elem,options={}){if(!elem)return"<unknown>";try{let currentElem=elem,MAX_TRAVERSE_HEIGHT=5,out=[],height=0,len=0,separator=" > ",sepLength=separator.length,nextStr,keyAttrs=Array.isArray(options)?options:options.keyAttrs,maxStringLength=!Array.isArray(options)&&options.maxStringLength||DEFAULT_MAX_STRING_LENGTH;for(;currentElem&&height++<MAX_TRAVERSE_HEIGHT&&(nextStr=_htmlElementAsString(currentElem,keyAttrs),!(nextStr==="html"||height>1&&len+out.length*sepLength+nextStr.length>=maxStringLength));)out.push(nextStr),len+=nextStr.length,currentElem=currentElem.parentNode;return out.reverse().join(separator)}catch{return"<unknown>"}}function _htmlElementAsString(el,keyAttrs){let elem=el,out=[],className,classes,key,attr,i;if(!elem||!elem.tagName)return"";if(WINDOW.HTMLElement&&elem instanceof HTMLElement&&elem.dataset&&elem.dataset.sentryComponent)return elem.dataset.sentryComponent;out.push(elem.tagName.toLowerCase());let keyAttrPairs=keyAttrs&&keyAttrs.length?keyAttrs.filter(keyAttr=>elem.getAttribute(keyAttr)).map(keyAttr=>[keyAttr,elem.getAttribute(keyAttr)]):null;if(keyAttrPairs&&keyAttrPairs.length)keyAttrPairs.forEach(keyAttrPair=>{out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`)});else if(elem.id&&out.push(`#${elem.id}`),className=elem.className,className&&is.isString(className))for(classes=className.split(/\s+/),i=0;i<classes.length;i++)out.push(`.${classes[i]}`);let allowedAttrs=["aria-label","type","name","title","alt"];for(i=0;i<allowedAttrs.length;i++)key=allowedAttrs[i],attr=elem.getAttribute(key),attr&&out.push(`[${key}="${attr}"]`);return out.join("")}function getLocationHref(){try{return WINDOW.document.location.href}catch{return""}}function getDomElement(selector){return WINDOW.document&&WINDOW.document.querySelector?WINDOW.document.querySelector(selector):null}function getComponentName(elem){if(!WINDOW.HTMLElement)return null;let currentElem=elem,MAX_TRAVERSE_HEIGHT=5;for(let i=0;i<MAX_TRAVERSE_HEIGHT;i++){if(!currentElem)return null;if(currentElem instanceof HTMLElement&¤tElem.dataset.sentryComponent)return currentElem.dataset.sentryComponent;currentElem=currentElem.parentNode}return null}exports.getComponentName=getComponentName;exports.getDomElement=getDomElement;exports.getLocationHref=getLocationHref;exports.htmlTreeAsString=htmlTreeAsString}});var require_debug_build=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/debug-build.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEBUG_BUILD=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;exports.DEBUG_BUILD=DEBUG_BUILD}});var require_logger=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/logger.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),worldwide=require_worldwide(),PREFIX="Sentry Logger ",CONSOLE_LEVELS=["debug","info","warn","error","log","assert","trace"],originalConsoleMethods={};function consoleSandbox(callback){if(!("console"in worldwide.GLOBAL_OBJ))return callback();let console2=worldwide.GLOBAL_OBJ.console,wrappedFuncs={},wrappedLevels=Object.keys(originalConsoleMethods);wrappedLevels.forEach(level=>{let originalConsoleMethod=originalConsoleMethods[level];wrappedFuncs[level]=console2[level],console2[level]=originalConsoleMethod});try{return callback()}finally{wrappedLevels.forEach(level=>{console2[level]=wrappedFuncs[level]})}}function makeLogger(){let enabled=!1,logger2={enable:()=>{enabled=!0},disable:()=>{enabled=!1},isEnabled:()=>enabled};return debugBuild.DEBUG_BUILD?CONSOLE_LEVELS.forEach(name=>{logger2[name]=(...args)=>{enabled&&consoleSandbox(()=>{worldwide.GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`,...args)})}}):CONSOLE_LEVELS.forEach(name=>{logger2[name]=()=>{}}),logger2}var logger=makeLogger();exports.CONSOLE_LEVELS=CONSOLE_LEVELS;exports.consoleSandbox=consoleSandbox;exports.logger=logger;exports.originalConsoleMethods=originalConsoleMethods}});var require_dsn=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/dsn.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),logger=require_logger(),DSN_REGEX=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function isValidProtocol(protocol){return protocol==="http"||protocol==="https"}function dsnToString(dsn,withPassword=!1){let{host,path,pass,port,projectId,protocol,publicKey}=dsn;return`${protocol}://${publicKey}${withPassword&&pass?`:${pass}`:""}@${host}${port?`:${port}`:""}/${path&&`${path}/`}${projectId}`}function dsnFromString(str){let match=DSN_REGEX.exec(str);if(!match){logger.consoleSandbox(()=>{console.error(`Invalid Sentry Dsn: ${str}`)});return}let[protocol,publicKey,pass="",host,port="",lastPath]=match.slice(1),path="",projectId=lastPath,split=projectId.split("/");if(split.length>1&&(path=split.slice(0,-1).join("/"),projectId=split.pop()),projectId){let projectMatch=projectId.match(/^\d+/);projectMatch&&(projectId=projectMatch[0])}return dsnFromComponents({host,pass,path,projectId,port,protocol,publicKey})}function dsnFromComponents(components){return{protocol:components.protocol,publicKey:components.publicKey||"",pass:components.pass||"",host:components.host,port:components.port||"",path:components.path||"",projectId:components.projectId}}function validateDsn(dsn){if(!debugBuild.DEBUG_BUILD)return!0;let{port,projectId,protocol}=dsn;return["protocol","publicKey","host","projectId"].find(component=>dsn[component]?!1:(logger.logger.error(`Invalid Sentry Dsn: ${component} missing`),!0))?!1:projectId.match(/^\d+$/)?isValidProtocol(protocol)?port&&isNaN(parseInt(port,10))?(logger.logger.error(`Invalid Sentry Dsn: Invalid port ${port}`),!1):!0:(logger.logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`),!1):(logger.logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`),!1)}function makeDsn(from){let components=typeof from=="string"?dsnFromString(from):dsnFromComponents(from);if(!(!components||!validateDsn(components)))return components}exports.dsnFromString=dsnFromString;exports.dsnToString=dsnToString;exports.makeDsn=makeDsn}});var require_error=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/error.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var SentryError=class extends Error{constructor(message,logLevel="warn"){super(message),this.message=message,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=logLevel}};exports.SentryError=SentryError}});var require_object=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/object.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var browser=require_browser(),debugBuild=require_debug_build(),is=require_is(),logger=require_logger(),string=require_string();function fill(source,name,replacementFactory){if(!(name in source))return;let original=source[name],wrapped=replacementFactory(original);typeof wrapped=="function"&&markFunctionWrapped(wrapped,original),source[name]=wrapped}function addNonEnumerableProperty(obj,name,value){try{Object.defineProperty(obj,name,{value,writable:!0,configurable:!0})}catch{debugBuild.DEBUG_BUILD&&logger.logger.log(`Failed to add non-enumerable property "${name}" to object`,obj)}}function markFunctionWrapped(wrapped,original){try{let proto=original.prototype||{};wrapped.prototype=original.prototype=proto,addNonEnumerableProperty(wrapped,"__sentry_original__",original)}catch{}}function getOriginalFunction(func){return func.__sentry_original__}function urlEncode(object){return Object.keys(object).map(key=>`${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`).join("&")}function convertToPlainObject(value){if(is.isError(value))return{message:value.message,name:value.name,stack:value.stack,...getOwnProperties(value)};if(is.isEvent(value)){let newObj={type:value.type,target:serializeEventTarget(value.target),currentTarget:serializeEventTarget(value.currentTarget),...getOwnProperties(value)};return typeof CustomEvent<"u"&&is.isInstanceOf(value,CustomEvent)&&(newObj.detail=value.detail),newObj}else return value}function serializeEventTarget(target){try{return is.isElement(target)?browser.htmlTreeAsString(target):Object.prototype.toString.call(target)}catch{return"<unknown>"}}function getOwnProperties(obj){if(typeof obj=="object"&&obj!==null){let extractedProps={};for(let property in obj)Object.prototype.hasOwnProperty.call(obj,property)&&(extractedProps[property]=obj[property]);return extractedProps}else return{}}function extractExceptionKeysForMessage(exception,maxLength=40){let keys=Object.keys(convertToPlainObject(exception));if(keys.sort(),!keys.length)return"[object has no keys]";if(keys[0].length>=maxLength)return string.truncate(keys[0],maxLength);for(let includedKeys=keys.length;includedKeys>0;includedKeys--){let serialized=keys.slice(0,includedKeys).join(", ");if(!(serialized.length>maxLength))return includedKeys===keys.length?serialized:string.truncate(serialized,maxLength)}return""}function dropUndefinedKeys(inputValue){return _dropUndefinedKeys(inputValue,new Map)}function _dropUndefinedKeys(inputValue,memoizationMap){if(isPojo(inputValue)){let memoVal=memoizationMap.get(inputValue);if(memoVal!==void 0)return memoVal;let returnValue={};memoizationMap.set(inputValue,returnValue);for(let key of Object.keys(inputValue))typeof inputValue[key]<"u"&&(returnValue[key]=_dropUndefinedKeys(inputValue[key],memoizationMap));return returnValue}if(Array.isArray(inputValue)){let memoVal=memoizationMap.get(inputValue);if(memoVal!==void 0)return memoVal;let returnValue=[];return memoizationMap.set(inputValue,returnValue),inputValue.forEach(item=>{returnValue.push(_dropUndefinedKeys(item,memoizationMap))}),returnValue}return inputValue}function isPojo(input){if(!is.isPlainObject(input))return!1;try{let name=Object.getPrototypeOf(input).constructor.name;return!name||name==="Object"}catch{return!0}}function objectify(wat){let objectified;switch(!0){case wat==null:objectified=new String(wat);break;case(typeof wat=="symbol"||typeof wat=="bigint"):objectified=Object(wat);break;case is.isPrimitive(wat):objectified=new wat.constructor(wat);break;default:objectified=wat;break}return objectified}exports.addNonEnumerableProperty=addNonEnumerableProperty;exports.convertToPlainObject=convertToPlainObject;exports.dropUndefinedKeys=dropUndefinedKeys;exports.extractExceptionKeysForMessage=extractExceptionKeysForMessage;exports.fill=fill;exports.getOriginalFunction=getOriginalFunction;exports.markFunctionWrapped=markFunctionWrapped;exports.objectify=objectify;exports.urlEncode=urlEncode}});var require_node_stack_trace=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node-stack-trace.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function filenameIsInApp(filename,isNative=!1){return!(isNative||filename&&!filename.startsWith("/")&&!filename.match(/^[A-Z]:/)&&!filename.startsWith(".")&&!filename.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&filename!==void 0&&!filename.includes("node_modules/")}function node(getModule){let FILENAME_MATCH=/^\s*[-]{4,}$/,FULL_MATCH=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/;return line=>{let lineMatch=line.match(FULL_MATCH);if(lineMatch){let object,method,functionName,typeName,methodName;if(lineMatch[1]){functionName=lineMatch[1];let methodStart=functionName.lastIndexOf(".");if(functionName[methodStart-1]==="."&&methodStart--,methodStart>0){object=functionName.slice(0,methodStart),method=functionName.slice(methodStart+1);let objectEnd=object.indexOf(".Module");objectEnd>0&&(functionName=functionName.slice(objectEnd+1),object=object.slice(0,objectEnd))}typeName=void 0}method&&(typeName=object,methodName=method),method==="<anonymous>"&&(methodName=void 0,functionName=void 0),functionName===void 0&&(methodName=methodName||"<anonymous>",functionName=typeName?`${typeName}.${methodName}`:methodName);let filename=lineMatch[2]&&lineMatch[2].startsWith("file://")?lineMatch[2].slice(7):lineMatch[2],isNative=lineMatch[5]==="native";return filename&&filename.match(/\/[A-Z]:/)&&(filename=filename.slice(1)),!filename&&lineMatch[5]&&!isNative&&(filename=lineMatch[5]),{filename,module:getModule?getModule(filename):void 0,function:functionName,lineno:parseInt(lineMatch[3],10)||void 0,colno:parseInt(lineMatch[4],10)||void 0,in_app:filenameIsInApp(filename,isNative)}}if(line.match(FILENAME_MATCH))return{filename:line}}}exports.filenameIsInApp=filenameIsInApp;exports.node=node}});var require_stacktrace=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/stacktrace.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var nodeStackTrace=require_node_stack_trace(),STACKTRACE_FRAME_LIMIT=50,WEBPACK_ERROR_REGEXP=/\(error: (.*)\)/,STRIP_FRAME_REGEXP=/captureMessage|captureException/;function createStackParser(...parsers){let sortedParsers=parsers.sort((a,b)=>a[0]-b[0]).map(p=>p[1]);return(stack,skipFirst=0)=>{let frames=[],lines=stack.split(`
|
|
8
|
+
`);for(let i=skipFirst;i<lines.length;i++){let line=lines[i];if(line.length>1024)continue;let cleanedLine=WEBPACK_ERROR_REGEXP.test(line)?line.replace(WEBPACK_ERROR_REGEXP,"$1"):line;if(!cleanedLine.match(/\S*Error: /)){for(let parser of sortedParsers){let frame=parser(cleanedLine);if(frame){frames.push(frame);break}}if(frames.length>=STACKTRACE_FRAME_LIMIT)break}}return stripSentryFramesAndReverse(frames)}}function stackParserFromStackParserOptions(stackParser){return Array.isArray(stackParser)?createStackParser(...stackParser):stackParser}function stripSentryFramesAndReverse(stack){if(!stack.length)return[];let localStack=Array.from(stack);return/sentryWrapped/.test(localStack[localStack.length-1].function||"")&&localStack.pop(),localStack.reverse(),STRIP_FRAME_REGEXP.test(localStack[localStack.length-1].function||"")&&(localStack.pop(),STRIP_FRAME_REGEXP.test(localStack[localStack.length-1].function||"")&&localStack.pop()),localStack.slice(0,STACKTRACE_FRAME_LIMIT).map(frame=>({...frame,filename:frame.filename||localStack[localStack.length-1].filename,function:frame.function||"?"}))}var defaultFunctionName="<anonymous>";function getFunctionName(fn){try{return!fn||typeof fn!="function"?defaultFunctionName:fn.name||defaultFunctionName}catch{return defaultFunctionName}}function nodeStackLineParser(getModule){return[90,nodeStackTrace.node(getModule)]}exports.filenameIsInApp=nodeStackTrace.filenameIsInApp;exports.createStackParser=createStackParser;exports.getFunctionName=getFunctionName;exports.nodeStackLineParser=nodeStackLineParser;exports.stackParserFromStackParserOptions=stackParserFromStackParserOptions;exports.stripSentryFramesAndReverse=stripSentryFramesAndReverse}});var require_handlers=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/_handlers.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),logger=require_logger(),stacktrace=require_stacktrace(),handlers={},instrumented={};function addHandler(type,handler){handlers[type]=handlers[type]||[],handlers[type].push(handler)}function resetInstrumentationHandlers(){Object.keys(handlers).forEach(key=>{handlers[key]=void 0})}function maybeInstrument(type,instrumentFn){instrumented[type]||(instrumentFn(),instrumented[type]=!0)}function triggerHandlers(type,data){let typeHandlers=type&&handlers[type];if(typeHandlers)for(let handler of typeHandlers)try{handler(data)}catch(e){debugBuild.DEBUG_BUILD&&logger.logger.error(`Error while triggering instrumentation handler.
|
|
9
|
+
Type: ${type}
|
|
10
|
+
Name: ${stacktrace.getFunctionName(handler)}
|
|
11
|
+
Error:`,e)}}exports.addHandler=addHandler;exports.maybeInstrument=maybeInstrument;exports.resetInstrumentationHandlers=resetInstrumentationHandlers;exports.triggerHandlers=triggerHandlers}});var require_console=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/console.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var logger=require_logger(),object=require_object(),worldwide=require_worldwide(),_handlers=require_handlers();function addConsoleInstrumentationHandler(handler){let type="console";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentConsole)}function instrumentConsole(){"console"in worldwide.GLOBAL_OBJ&&logger.CONSOLE_LEVELS.forEach(function(level){level in worldwide.GLOBAL_OBJ.console&&object.fill(worldwide.GLOBAL_OBJ.console,level,function(originalConsoleMethod){return logger.originalConsoleMethods[level]=originalConsoleMethod,function(...args){let handlerData={args,level};_handlers.triggerHandlers("console",handlerData);let log=logger.originalConsoleMethods[level];log&&log.apply(worldwide.GLOBAL_OBJ.console,args)}})})}exports.addConsoleInstrumentationHandler=addConsoleInstrumentationHandler}});var require_misc=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/misc.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var object=require_object(),string=require_string(),worldwide=require_worldwide();function uuid4(){let gbl=worldwide.GLOBAL_OBJ,crypto=gbl.crypto||gbl.msCrypto,getRandomByte=()=>Math.random()*16;try{if(crypto&&crypto.randomUUID)return crypto.randomUUID().replace(/-/g,"");crypto&&crypto.getRandomValues&&(getRandomByte=()=>{let typedArray=new Uint8Array(1);return crypto.getRandomValues(typedArray),typedArray[0]})}catch{}return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,c=>(c^(getRandomByte()&15)>>c/4).toString(16))}function getFirstException(event){return event.exception&&event.exception.values?event.exception.values[0]:void 0}function getEventDescription(event){let{message,event_id:eventId}=event;if(message)return message;let firstException=getFirstException(event);return firstException?firstException.type&&firstException.value?`${firstException.type}: ${firstException.value}`:firstException.type||firstException.value||eventId||"<unknown>":eventId||"<unknown>"}function addExceptionTypeValue(event,value,type){let exception=event.exception=event.exception||{},values=exception.values=exception.values||[],firstException=values[0]=values[0]||{};firstException.value||(firstException.value=value||""),firstException.type||(firstException.type=type||"Error")}function addExceptionMechanism(event,newMechanism){let firstException=getFirstException(event);if(!firstException)return;let defaultMechanism={type:"generic",handled:!0},currentMechanism=firstException.mechanism;if(firstException.mechanism={...defaultMechanism,...currentMechanism,...newMechanism},newMechanism&&"data"in newMechanism){let mergedData={...currentMechanism&¤tMechanism.data,...newMechanism.data};firstException.mechanism.data=mergedData}}var SEMVER_REGEXP=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;function parseSemver(input){let match=input.match(SEMVER_REGEXP)||[],major=parseInt(match[1],10),minor=parseInt(match[2],10),patch=parseInt(match[3],10);return{buildmetadata:match[5],major:isNaN(major)?void 0:major,minor:isNaN(minor)?void 0:minor,patch:isNaN(patch)?void 0:patch,prerelease:match[4]}}function addContextToFrame(lines,frame,linesOfContext=5){if(frame.lineno===void 0)return;let maxLines=lines.length,sourceLine=Math.max(Math.min(maxLines-1,frame.lineno-1),0);frame.pre_context=lines.slice(Math.max(0,sourceLine-linesOfContext),sourceLine).map(line=>string.snipLine(line,0)),frame.context_line=string.snipLine(lines[Math.min(maxLines-1,sourceLine)],frame.colno||0),frame.post_context=lines.slice(Math.min(sourceLine+1,maxLines),sourceLine+1+linesOfContext).map(line=>string.snipLine(line,0))}function checkOrSetAlreadyCaught(exception){if(exception&&exception.__sentry_captured__)return!0;try{object.addNonEnumerableProperty(exception,"__sentry_captured__",!0)}catch{}return!1}function arrayify(maybeArray){return Array.isArray(maybeArray)?maybeArray:[maybeArray]}exports.addContextToFrame=addContextToFrame;exports.addExceptionMechanism=addExceptionMechanism;exports.addExceptionTypeValue=addExceptionTypeValue;exports.arrayify=arrayify;exports.checkOrSetAlreadyCaught=checkOrSetAlreadyCaught;exports.getEventDescription=getEventDescription;exports.parseSemver=parseSemver;exports.uuid4=uuid4}});var require_dom=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/dom.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var misc=require_misc(),object=require_object(),worldwide=require_worldwide(),_handlers=require_handlers(),WINDOW=worldwide.GLOBAL_OBJ,DEBOUNCE_DURATION=1e3,debounceTimerID,lastCapturedEventType,lastCapturedEventTargetId;function addClickKeypressInstrumentationHandler(handler){let type="dom";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentDOM)}function instrumentDOM(){if(!WINDOW.document)return;let triggerDOMHandler=_handlers.triggerHandlers.bind(null,"dom"),globalDOMEventHandler=makeDOMEventHandler(triggerDOMHandler,!0);WINDOW.document.addEventListener("click",globalDOMEventHandler,!1),WINDOW.document.addEventListener("keypress",globalDOMEventHandler,!1),["EventTarget","Node"].forEach(target=>{let proto=WINDOW[target]&&WINDOW[target].prototype;!proto||!proto.hasOwnProperty||!proto.hasOwnProperty("addEventListener")||(object.fill(proto,"addEventListener",function(originalAddEventListener){return function(type,listener,options){if(type==="click"||type=="keypress")try{let el=this,handlers=el.__sentry_instrumentation_handlers__=el.__sentry_instrumentation_handlers__||{},handlerForType=handlers[type]=handlers[type]||{refCount:0};if(!handlerForType.handler){let handler=makeDOMEventHandler(triggerDOMHandler);handlerForType.handler=handler,originalAddEventListener.call(this,type,handler,options)}handlerForType.refCount++}catch{}return originalAddEventListener.call(this,type,listener,options)}}),object.fill(proto,"removeEventListener",function(originalRemoveEventListener){return function(type,listener,options){if(type==="click"||type=="keypress")try{let el=this,handlers=el.__sentry_instrumentation_handlers__||{},handlerForType=handlers[type];handlerForType&&(handlerForType.refCount--,handlerForType.refCount<=0&&(originalRemoveEventListener.call(this,type,handlerForType.handler,options),handlerForType.handler=void 0,delete handlers[type]),Object.keys(handlers).length===0&&delete el.__sentry_instrumentation_handlers__)}catch{}return originalRemoveEventListener.call(this,type,listener,options)}}))})}function isSimilarToLastCapturedEvent(event){if(event.type!==lastCapturedEventType)return!1;try{if(!event.target||event.target._sentryId!==lastCapturedEventTargetId)return!1}catch{}return!0}function shouldSkipDOMEvent(eventType,target){return eventType!=="keypress"?!1:!target||!target.tagName?!0:!(target.tagName==="INPUT"||target.tagName==="TEXTAREA"||target.isContentEditable)}function makeDOMEventHandler(handler,globalListener=!1){return event=>{if(!event||event._sentryCaptured)return;let target=getEventTarget(event);if(shouldSkipDOMEvent(event.type,target))return;object.addNonEnumerableProperty(event,"_sentryCaptured",!0),target&&!target._sentryId&&object.addNonEnumerableProperty(target,"_sentryId",misc.uuid4());let name=event.type==="keypress"?"input":event.type;isSimilarToLastCapturedEvent(event)||(handler({event,name,global:globalListener}),lastCapturedEventType=event.type,lastCapturedEventTargetId=target?target._sentryId:void 0),clearTimeout(debounceTimerID),debounceTimerID=WINDOW.setTimeout(()=>{lastCapturedEventTargetId=void 0,lastCapturedEventType=void 0},DEBOUNCE_DURATION)}}function getEventTarget(event){try{return event.target}catch{return null}}exports.addClickKeypressInstrumentationHandler=addClickKeypressInstrumentationHandler;exports.instrumentDOM=instrumentDOM}});var require_supports=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/supports.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),logger=require_logger(),worldwide=require_worldwide(),WINDOW=worldwide.getGlobalObject();function supportsErrorEvent(){try{return new ErrorEvent(""),!0}catch{return!1}}function supportsDOMError(){try{return new DOMError(""),!0}catch{return!1}}function supportsDOMException(){try{return new DOMException(""),!0}catch{return!1}}function supportsFetch(){if(!("fetch"in WINDOW))return!1;try{return new Headers,new Request("http://www.example.com"),new Response,!0}catch{return!1}}function isNativeFetch(func){return func&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(func.toString())}function supportsNativeFetch(){if(typeof EdgeRuntime=="string")return!0;if(!supportsFetch())return!1;if(isNativeFetch(WINDOW.fetch))return!0;let result=!1,doc=WINDOW.document;if(doc&&typeof doc.createElement=="function")try{let sandbox=doc.createElement("iframe");sandbox.hidden=!0,doc.head.appendChild(sandbox),sandbox.contentWindow&&sandbox.contentWindow.fetch&&(result=isNativeFetch(sandbox.contentWindow.fetch)),doc.head.removeChild(sandbox)}catch(err){debugBuild.DEBUG_BUILD&&logger.logger.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",err)}return result}function supportsReportingObserver(){return"ReportingObserver"in WINDOW}function supportsReferrerPolicy(){if(!supportsFetch())return!1;try{return new Request("_",{referrerPolicy:"origin"}),!0}catch{return!1}}exports.isNativeFetch=isNativeFetch;exports.supportsDOMError=supportsDOMError;exports.supportsDOMException=supportsDOMException;exports.supportsErrorEvent=supportsErrorEvent;exports.supportsFetch=supportsFetch;exports.supportsNativeFetch=supportsNativeFetch;exports.supportsReferrerPolicy=supportsReferrerPolicy;exports.supportsReportingObserver=supportsReportingObserver}});var require_fetch=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/fetch.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var object=require_object(),supports=require_supports(),worldwide=require_worldwide(),_handlers=require_handlers();function addFetchInstrumentationHandler(handler){let type="fetch";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentFetch)}function instrumentFetch(){supports.supportsNativeFetch()&&object.fill(worldwide.GLOBAL_OBJ,"fetch",function(originalFetch){return function(...args){let{method,url}=parseFetchArgs(args),handlerData={args,fetchData:{method,url},startTimestamp:Date.now()};return _handlers.triggerHandlers("fetch",{...handlerData}),originalFetch.apply(worldwide.GLOBAL_OBJ,args).then(response=>{let finishedHandlerData={...handlerData,endTimestamp:Date.now(),response};return _handlers.triggerHandlers("fetch",finishedHandlerData),response},error=>{let erroredHandlerData={...handlerData,endTimestamp:Date.now(),error};throw _handlers.triggerHandlers("fetch",erroredHandlerData),error})}})}function hasProp(obj,prop){return!!obj&&typeof obj=="object"&&!!obj[prop]}function getUrlFromResource(resource){return typeof resource=="string"?resource:resource?hasProp(resource,"url")?resource.url:resource.toString?resource.toString():"":""}function parseFetchArgs(fetchArgs){if(fetchArgs.length===0)return{method:"GET",url:""};if(fetchArgs.length===2){let[url,options]=fetchArgs;return{url:getUrlFromResource(url),method:hasProp(options,"method")?String(options.method).toUpperCase():"GET"}}let arg=fetchArgs[0];return{url:getUrlFromResource(arg),method:hasProp(arg,"method")?String(arg.method).toUpperCase():"GET"}}exports.addFetchInstrumentationHandler=addFetchInstrumentationHandler;exports.parseFetchArgs=parseFetchArgs}});var require_globalError=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalError.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var worldwide=require_worldwide(),_handlers=require_handlers(),_oldOnErrorHandler=null;function addGlobalErrorInstrumentationHandler(handler){let type="error";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentError)}function instrumentError(){_oldOnErrorHandler=worldwide.GLOBAL_OBJ.onerror,worldwide.GLOBAL_OBJ.onerror=function(msg,url,line,column,error){let handlerData={column,error,line,msg,url};return _handlers.triggerHandlers("error",handlerData),_oldOnErrorHandler&&!_oldOnErrorHandler.__SENTRY_LOADER__?_oldOnErrorHandler.apply(this,arguments):!1},worldwide.GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__=!0}exports.addGlobalErrorInstrumentationHandler=addGlobalErrorInstrumentationHandler}});var require_globalUnhandledRejection=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/globalUnhandledRejection.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var worldwide=require_worldwide(),_handlers=require_handlers(),_oldOnUnhandledRejectionHandler=null;function addGlobalUnhandledRejectionInstrumentationHandler(handler){let type="unhandledrejection";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentUnhandledRejection)}function instrumentUnhandledRejection(){_oldOnUnhandledRejectionHandler=worldwide.GLOBAL_OBJ.onunhandledrejection,worldwide.GLOBAL_OBJ.onunhandledrejection=function(e){let handlerData=e;return _handlers.triggerHandlers("unhandledrejection",handlerData),_oldOnUnhandledRejectionHandler&&!_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__?_oldOnUnhandledRejectionHandler.apply(this,arguments):!0},worldwide.GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}exports.addGlobalUnhandledRejectionInstrumentationHandler=addGlobalUnhandledRejectionInstrumentationHandler}});var require_supportsHistory=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/supportsHistory.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var worldwide=require_worldwide(),WINDOW=worldwide.getGlobalObject();function supportsHistory(){let chromeVar=WINDOW.chrome,isChromePackagedApp=chromeVar&&chromeVar.app&&chromeVar.app.runtime,hasHistoryApi="history"in WINDOW&&!!WINDOW.history.pushState&&!!WINDOW.history.replaceState;return!isChromePackagedApp&&hasHistoryApi}exports.supportsHistory=supportsHistory}});var require_history=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/history.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var object=require_object();require_debug_build();require_logger();var worldwide=require_worldwide(),supportsHistory=require_supportsHistory(),_handlers=require_handlers(),WINDOW=worldwide.GLOBAL_OBJ,lastHref;function addHistoryInstrumentationHandler(handler){let type="history";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentHistory)}function instrumentHistory(){if(!supportsHistory.supportsHistory())return;let oldOnPopState=WINDOW.onpopstate;WINDOW.onpopstate=function(...args){let to=WINDOW.location.href,from=lastHref;lastHref=to;let handlerData={from,to};if(_handlers.triggerHandlers("history",handlerData),oldOnPopState)try{return oldOnPopState.apply(this,args)}catch{}};function historyReplacementFunction(originalHistoryFunction){return function(...args){let url=args.length>2?args[2]:void 0;if(url){let from=lastHref,to=String(url);lastHref=to;let handlerData={from,to};_handlers.triggerHandlers("history",handlerData)}return originalHistoryFunction.apply(this,args)}}object.fill(WINDOW.history,"pushState",historyReplacementFunction),object.fill(WINDOW.history,"replaceState",historyReplacementFunction)}exports.addHistoryInstrumentationHandler=addHistoryInstrumentationHandler}});var require_xhr=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/xhr.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),object=require_object(),worldwide=require_worldwide(),_handlers=require_handlers(),WINDOW=worldwide.GLOBAL_OBJ,SENTRY_XHR_DATA_KEY="__sentry_xhr_v3__";function addXhrInstrumentationHandler(handler){let type="xhr";_handlers.addHandler(type,handler),_handlers.maybeInstrument(type,instrumentXHR)}function instrumentXHR(){if(!WINDOW.XMLHttpRequest)return;let xhrproto=XMLHttpRequest.prototype;object.fill(xhrproto,"open",function(originalOpen){return function(...args){let startTimestamp=Date.now(),method=is.isString(args[0])?args[0].toUpperCase():void 0,url=parseUrl(args[1]);if(!method||!url)return originalOpen.apply(this,args);this[SENTRY_XHR_DATA_KEY]={method,url,request_headers:{}},method==="POST"&&url.match(/sentry_key/)&&(this.__sentry_own_request__=!0);let onreadystatechangeHandler=()=>{let xhrInfo=this[SENTRY_XHR_DATA_KEY];if(xhrInfo&&this.readyState===4){try{xhrInfo.status_code=this.status}catch{}let handlerData={args:[method,url],endTimestamp:Date.now(),startTimestamp,xhr:this};_handlers.triggerHandlers("xhr",handlerData)}};return"onreadystatechange"in this&&typeof this.onreadystatechange=="function"?object.fill(this,"onreadystatechange",function(original){return function(...readyStateArgs){return onreadystatechangeHandler(),original.apply(this,readyStateArgs)}}):this.addEventListener("readystatechange",onreadystatechangeHandler),object.fill(this,"setRequestHeader",function(original){return function(...setRequestHeaderArgs){let[header,value]=setRequestHeaderArgs,xhrInfo=this[SENTRY_XHR_DATA_KEY];return xhrInfo&&is.isString(header)&&is.isString(value)&&(xhrInfo.request_headers[header.toLowerCase()]=value),original.apply(this,setRequestHeaderArgs)}}),originalOpen.apply(this,args)}}),object.fill(xhrproto,"send",function(originalSend){return function(...args){let sentryXhrData=this[SENTRY_XHR_DATA_KEY];if(!sentryXhrData)return originalSend.apply(this,args);args[0]!==void 0&&(sentryXhrData.body=args[0]);let handlerData={args:[sentryXhrData.method,sentryXhrData.url],startTimestamp:Date.now(),xhr:this};return _handlers.triggerHandlers("xhr",handlerData),originalSend.apply(this,args)}})}function parseUrl(url){if(is.isString(url))return url;try{return url.toString()}catch{}}exports.SENTRY_XHR_DATA_KEY=SENTRY_XHR_DATA_KEY;exports.addXhrInstrumentationHandler=addXhrInstrumentationHandler;exports.instrumentXHR=instrumentXHR}});var require_instrument=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/instrument/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),logger=require_logger(),console2=require_console(),dom=require_dom(),fetch2=require_fetch(),globalError=require_globalError(),globalUnhandledRejection=require_globalUnhandledRejection(),history=require_history(),xhr=require_xhr();function addInstrumentationHandler(type,callback){switch(type){case"console":return console2.addConsoleInstrumentationHandler(callback);case"dom":return dom.addClickKeypressInstrumentationHandler(callback);case"xhr":return xhr.addXhrInstrumentationHandler(callback);case"fetch":return fetch2.addFetchInstrumentationHandler(callback);case"history":return history.addHistoryInstrumentationHandler(callback);case"error":return globalError.addGlobalErrorInstrumentationHandler(callback);case"unhandledrejection":return globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler(callback);default:debugBuild.DEBUG_BUILD&&logger.logger.warn("unknown instrumentation type:",type)}}exports.addConsoleInstrumentationHandler=console2.addConsoleInstrumentationHandler;exports.addClickKeypressInstrumentationHandler=dom.addClickKeypressInstrumentationHandler;exports.addFetchInstrumentationHandler=fetch2.addFetchInstrumentationHandler;exports.addGlobalErrorInstrumentationHandler=globalError.addGlobalErrorInstrumentationHandler;exports.addGlobalUnhandledRejectionInstrumentationHandler=globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler;exports.addHistoryInstrumentationHandler=history.addHistoryInstrumentationHandler;exports.SENTRY_XHR_DATA_KEY=xhr.SENTRY_XHR_DATA_KEY;exports.addXhrInstrumentationHandler=xhr.addXhrInstrumentationHandler;exports.addInstrumentationHandler=addInstrumentationHandler}});var require_env=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/env.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function isBrowserBundle(){return typeof __SENTRY_BROWSER_BUNDLE__<"u"&&!!__SENTRY_BROWSER_BUNDLE__}function getSDKSource(){return"npm"}exports.getSDKSource=getSDKSource;exports.isBrowserBundle=isBrowserBundle}});var require_node=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/node.js"(exports,module){Object.defineProperty(exports,"__esModule",{value:!0});var env=require_env();function isNodeEnv(){return!env.isBrowserBundle()&&Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]"}function dynamicRequire(mod,request){return mod.require(request)}function loadModule(moduleName){let mod;try{mod=dynamicRequire(module,moduleName)}catch{}try{let{cwd}=dynamicRequire(module,"process");mod=dynamicRequire(module,`${cwd()}/node_modules/${moduleName}`)}catch{}return mod}exports.dynamicRequire=dynamicRequire;exports.isNodeEnv=isNodeEnv;exports.loadModule=loadModule}});var require_isBrowser=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/isBrowser.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var node=require_node(),worldwide=require_worldwide();function isBrowser(){return typeof window<"u"&&(!node.isNodeEnv()||isElectronNodeRenderer())}function isElectronNodeRenderer(){return worldwide.GLOBAL_OBJ.process!==void 0&&worldwide.GLOBAL_OBJ.process.type==="renderer"}exports.isBrowser=isBrowser}});var require_memo=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/memo.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function memoBuilder(){let hasWeakSet=typeof WeakSet=="function",inner=hasWeakSet?new WeakSet:[];function memoize(obj){if(hasWeakSet)return inner.has(obj)?!0:(inner.add(obj),!1);for(let i=0;i<inner.length;i++)if(inner[i]===obj)return!0;return inner.push(obj),!1}function unmemoize(obj){if(hasWeakSet)inner.delete(obj);else for(let i=0;i<inner.length;i++)if(inner[i]===obj){inner.splice(i,1);break}}return[memoize,unmemoize]}exports.memoBuilder=memoBuilder}});var require_normalize=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/normalize.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),memo=require_memo(),object=require_object(),stacktrace=require_stacktrace();function normalize(input,depth=100,maxProperties=1/0){try{return visit("",input,depth,maxProperties)}catch(err){return{ERROR:`**non-serializable** (${err})`}}}function normalizeToSize(object2,depth=3,maxSize=100*1024){let normalized=normalize(object2,depth);return jsonSize(normalized)>maxSize?normalizeToSize(object2,depth-1,maxSize):normalized}function visit(key,value,depth=1/0,maxProperties=1/0,memo$1=memo.memoBuilder()){let[memoize,unmemoize]=memo$1;if(value==null||["number","boolean","string"].includes(typeof value)&&!is.isNaN(value))return value;let stringified=stringifyValue(key,value);if(!stringified.startsWith("[object "))return stringified;if(value.__sentry_skip_normalization__)return value;let remainingDepth=typeof value.__sentry_override_normalization_depth__=="number"?value.__sentry_override_normalization_depth__:depth;if(remainingDepth===0)return stringified.replace("object ","");if(memoize(value))return"[Circular ~]";let valueWithToJSON=value;if(valueWithToJSON&&typeof valueWithToJSON.toJSON=="function")try{let jsonValue=valueWithToJSON.toJSON();return visit("",jsonValue,remainingDepth-1,maxProperties,memo$1)}catch{}let normalized=Array.isArray(value)?[]:{},numAdded=0,visitable=object.convertToPlainObject(value);for(let visitKey in visitable){if(!Object.prototype.hasOwnProperty.call(visitable,visitKey))continue;if(numAdded>=maxProperties){normalized[visitKey]="[MaxProperties ~]";break}let visitValue=visitable[visitKey];normalized[visitKey]=visit(visitKey,visitValue,remainingDepth-1,maxProperties,memo$1),numAdded++}return unmemoize(value),normalized}function stringifyValue(key,value){try{if(key==="domain"&&value&&typeof value=="object"&&value._events)return"[Domain]";if(key==="domainEmitter")return"[DomainEmitter]";if(typeof global<"u"&&value===global)return"[Global]";if(typeof window<"u"&&value===window)return"[Window]";if(typeof document<"u"&&value===document)return"[Document]";if(is.isVueViewModel(value))return"[VueViewModel]";if(is.isSyntheticEvent(value))return"[SyntheticEvent]";if(typeof value=="number"&&value!==value)return"[NaN]";if(typeof value=="function")return`[Function: ${stacktrace.getFunctionName(value)}]`;if(typeof value=="symbol")return`[${String(value)}]`;if(typeof value=="bigint")return`[BigInt: ${String(value)}]`;let objName=getConstructorName(value);return/^HTML(\w*)Element$/.test(objName)?`[HTMLElement: ${objName}]`:`[object ${objName}]`}catch(err){return`**non-serializable** (${err})`}}function getConstructorName(value){let prototype=Object.getPrototypeOf(value);return prototype?prototype.constructor.name:"null prototype"}function utf8Length(value){return~-encodeURI(value).split(/%..|./).length}function jsonSize(value){return utf8Length(JSON.stringify(value))}function normalizeUrlToBase(url,basePath){let escapedBase=basePath.replace(/\\/g,"/").replace(/[|\\{}()[\]^$+*?.]/g,"\\$&"),newUrl=url;try{newUrl=decodeURI(url)}catch{}return newUrl.replace(/\\/g,"/").replace(/webpack:\/?/g,"").replace(new RegExp(`(file://)?/*${escapedBase}/*`,"ig"),"app:///")}exports.normalize=normalize;exports.normalizeToSize=normalizeToSize;exports.normalizeUrlToBase=normalizeUrlToBase;exports.walk=visit}});var require_path=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/path.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function normalizeArray(parts,allowAboveRoot){let up=0;for(let i=parts.length-1;i>=0;i--){let last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up--;up)parts.unshift("..");return parts}var splitPathRe=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function splitPath(filename){let truncated=filename.length>1024?`<truncated>${filename.slice(-1024)}`:filename,parts=splitPathRe.exec(truncated);return parts?parts.slice(1):[]}function resolve(...args){let resolvedPath="",resolvedAbsolute=!1;for(let i=args.length-1;i>=-1&&!resolvedAbsolute;i--){let path=i>=0?args[i]:"/";path&&(resolvedPath=`${path}/${resolvedPath}`,resolvedAbsolute=path.charAt(0)==="/")}return resolvedPath=normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/"),(resolvedAbsolute?"/":"")+resolvedPath||"."}function trim(arr){let start=0;for(;start<arr.length&&arr[start]==="";start++);let end=arr.length-1;for(;end>=0&&arr[end]==="";end--);return start>end?[]:arr.slice(start,end-start+1)}function relative(from,to){from=resolve(from).slice(1),to=resolve(to).slice(1);let fromParts=trim(from.split("/")),toParts=trim(to.split("/")),length=Math.min(fromParts.length,toParts.length),samePartsLength=length;for(let i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}let outputParts=[];for(let i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");return outputParts=outputParts.concat(toParts.slice(samePartsLength)),outputParts.join("/")}function normalizePath(path){let isPathAbsolute=isAbsolute(path),trailingSlash=path.slice(-1)==="/",normalizedPath=normalizeArray(path.split("/").filter(p=>!!p),!isPathAbsolute).join("/");return!normalizedPath&&!isPathAbsolute&&(normalizedPath="."),normalizedPath&&trailingSlash&&(normalizedPath+="/"),(isPathAbsolute?"/":"")+normalizedPath}function isAbsolute(path){return path.charAt(0)==="/"}function join(...args){return normalizePath(args.join("/"))}function dirname(path){let result=splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.slice(0,dir.length-1)),root+dir)}function basename(path,ext){let f=splitPath(path)[2];return ext&&f.slice(ext.length*-1)===ext&&(f=f.slice(0,f.length-ext.length)),f}exports.basename=basename;exports.dirname=dirname;exports.isAbsolute=isAbsolute;exports.join=join;exports.normalizePath=normalizePath;exports.relative=relative;exports.resolve=resolve}});var require_syncpromise=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/syncpromise.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),States;(function(States2){States2[States2.PENDING=0]="PENDING";let RESOLVED=1;States2[States2.RESOLVED=RESOLVED]="RESOLVED";let REJECTED=2;States2[States2.REJECTED=REJECTED]="REJECTED"})(States||(States={}));function resolvedSyncPromise(value){return new SyncPromise(resolve=>{resolve(value)})}function rejectedSyncPromise(reason){return new SyncPromise((_,reject)=>{reject(reason)})}var SyncPromise=class _SyncPromise{constructor(executor){_SyncPromise.prototype.__init.call(this),_SyncPromise.prototype.__init2.call(this),_SyncPromise.prototype.__init3.call(this),_SyncPromise.prototype.__init4.call(this),this._state=States.PENDING,this._handlers=[];try{executor(this._resolve,this._reject)}catch(e){this._reject(e)}}then(onfulfilled,onrejected){return new _SyncPromise((resolve,reject)=>{this._handlers.push([!1,result=>{if(!onfulfilled)resolve(result);else try{resolve(onfulfilled(result))}catch(e){reject(e)}},reason=>{if(!onrejected)reject(reason);else try{resolve(onrejected(reason))}catch(e){reject(e)}}]),this._executeHandlers()})}catch(onrejected){return this.then(val=>val,onrejected)}finally(onfinally){return new _SyncPromise((resolve,reject)=>{let val,isRejected;return this.then(value=>{isRejected=!1,val=value,onfinally&&onfinally()},reason=>{isRejected=!0,val=reason,onfinally&&onfinally()}).then(()=>{if(isRejected){reject(val);return}resolve(val)})})}__init(){this._resolve=value=>{this._setResult(States.RESOLVED,value)}}__init2(){this._reject=reason=>{this._setResult(States.REJECTED,reason)}}__init3(){this._setResult=(state,value)=>{if(this._state===States.PENDING){if(is.isThenable(value)){value.then(this._resolve,this._reject);return}this._state=state,this._value=value,this._executeHandlers()}}}__init4(){this._executeHandlers=()=>{if(this._state===States.PENDING)return;let cachedHandlers=this._handlers.slice();this._handlers=[],cachedHandlers.forEach(handler=>{handler[0]||(this._state===States.RESOLVED&&handler[1](this._value),this._state===States.REJECTED&&handler[2](this._value),handler[0]=!0)})}}};exports.SyncPromise=SyncPromise;exports.rejectedSyncPromise=rejectedSyncPromise;exports.resolvedSyncPromise=resolvedSyncPromise}});var require_promisebuffer=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/promisebuffer.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var error=require_error(),syncpromise=require_syncpromise();function makePromiseBuffer(limit){let buffer=[];function isReady(){return limit===void 0||buffer.length<limit}function remove(task){return buffer.splice(buffer.indexOf(task),1)[0]}function add(taskProducer){if(!isReady())return syncpromise.rejectedSyncPromise(new error.SentryError("Not adding Promise because buffer limit was reached."));let task=taskProducer();return buffer.indexOf(task)===-1&&buffer.push(task),task.then(()=>remove(task)).then(null,()=>remove(task).then(null,()=>{})),task}function drain(timeout){return new syncpromise.SyncPromise((resolve,reject)=>{let counter=buffer.length;if(!counter)return resolve(!0);let capturedSetTimeout=setTimeout(()=>{timeout&&timeout>0&&resolve(!1)},timeout);buffer.forEach(item=>{syncpromise.resolvedSyncPromise(item).then(()=>{--counter||(clearTimeout(capturedSetTimeout),resolve(!0))},reject)})})}return{$:buffer,add,drain}}exports.makePromiseBuffer=makePromiseBuffer}});var require_cookie=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cookie.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function parseCookie(str){let obj={},index=0;for(;index<str.length;){let eqIdx=str.indexOf("=",index);if(eqIdx===-1)break;let endIdx=str.indexOf(";",index);if(endIdx===-1)endIdx=str.length;else if(endIdx<eqIdx){index=str.lastIndexOf(";",eqIdx-1)+1;continue}let key=str.slice(index,eqIdx).trim();if(obj[key]===void 0){let val=str.slice(eqIdx+1,endIdx).trim();val.charCodeAt(0)===34&&(val=val.slice(1,-1));try{obj[key]=val.indexOf("%")!==-1?decodeURIComponent(val):val}catch{obj[key]=val}}index=endIdx+1}return obj}exports.parseCookie=parseCookie}});var require_url=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/url.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function parseUrl(url){if(!url)return{};let match=url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!match)return{};let query=match[6]||"",fragment=match[8]||"";return{host:match[4],path:match[5],protocol:match[2],search:query,hash:fragment,relative:match[5]+query+fragment}}function stripUrlQueryAndFragment(urlPath){return urlPath.split(/[\?#]/,1)[0]}function getNumberOfUrlSegments(url){return url.split(/\\?\//).filter(s=>s.length>0&&s!==",").length}function getSanitizedUrlString(url){let{protocol,host,path}=url,filteredHost=host&&host.replace(/^.*@/,"[filtered]:[filtered]@").replace(/(:80)$/,"").replace(/(:443)$/,"")||"";return`${protocol?`${protocol}://`:""}${filteredHost}${path}`}exports.getNumberOfUrlSegments=getNumberOfUrlSegments;exports.getSanitizedUrlString=getSanitizedUrlString;exports.parseUrl=parseUrl;exports.stripUrlQueryAndFragment=stripUrlQueryAndFragment}});var require_requestdata=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/requestdata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var cookie=require_cookie(),debugBuild=require_debug_build(),is=require_is(),logger=require_logger(),normalize=require_normalize(),url=require_url(),DEFAULT_INCLUDES={ip:!1,request:!0,transaction:!0,user:!0},DEFAULT_REQUEST_INCLUDES=["cookies","data","headers","method","query_string","url"],DEFAULT_USER_INCLUDES=["id","username","email"];function addRequestDataToTransaction(transaction,req,deps){if(transaction){if(!transaction.metadata.source||transaction.metadata.source==="url"){let[name,source]=extractPathForTransaction(req,{path:!0,method:!0});transaction.updateName(name),transaction.setMetadata({source})}transaction.setAttribute("url",req.originalUrl||req.url),req.baseUrl&&transaction.setAttribute("baseUrl",req.baseUrl),transaction.setData("query",extractQueryParams(req,deps))}}function extractPathForTransaction(req,options={}){let method=req.method&&req.method.toUpperCase(),path="",source="url";options.customRoute||req.route?(path=options.customRoute||`${req.baseUrl||""}${req.route&&req.route.path}`,source="route"):(req.originalUrl||req.url)&&(path=url.stripUrlQueryAndFragment(req.originalUrl||req.url||""));let name="";return options.method&&method&&(name+=method),options.method&&options.path&&(name+=" "),options.path&&path&&(name+=path),[name,source]}function extractTransaction(req,type){switch(type){case"path":return extractPathForTransaction(req,{path:!0})[0];case"handler":return req.route&&req.route.stack&&req.route.stack[0]&&req.route.stack[0].name||"<anonymous>";case"methodPath":default:{let customRoute=req._reconstructedRoute?req._reconstructedRoute:void 0;return extractPathForTransaction(req,{path:!0,method:!0,customRoute})[0]}}}function extractUserData(user,keys){let extractedUser={};return(Array.isArray(keys)?keys:DEFAULT_USER_INCLUDES).forEach(key=>{user&&key in user&&(extractedUser[key]=user[key])}),extractedUser}function extractRequestData(req,options){let{include=DEFAULT_REQUEST_INCLUDES,deps}=options||{},requestData={},headers=req.headers||{},method=req.method,host=headers.host||req.hostname||req.host||"<no host>",protocol=req.protocol==="https"||req.socket&&req.socket.encrypted?"https":"http",originalUrl=req.originalUrl||req.url||"",absoluteUrl=originalUrl.startsWith(protocol)?originalUrl:`${protocol}://${host}${originalUrl}`;return include.forEach(key=>{switch(key){case"headers":{requestData.headers=headers,include.includes("cookies")||delete requestData.headers.cookie;break}case"method":{requestData.method=method;break}case"url":{requestData.url=absoluteUrl;break}case"cookies":{requestData.cookies=req.cookies||headers.cookie&&cookie.parseCookie(headers.cookie)||{};break}case"query_string":{requestData.query_string=extractQueryParams(req,deps);break}case"data":{if(method==="GET"||method==="HEAD")break;req.body!==void 0&&(requestData.data=is.isString(req.body)?req.body:JSON.stringify(normalize.normalize(req.body)));break}default:({}).hasOwnProperty.call(req,key)&&(requestData[key]=req[key])}}),requestData}function addRequestDataToEvent(event,req,options){let include={...DEFAULT_INCLUDES,...options&&options.include};if(include.request){let extractedRequestData=Array.isArray(include.request)?extractRequestData(req,{include:include.request,deps:options&&options.deps}):extractRequestData(req,{deps:options&&options.deps});event.request={...event.request,...extractedRequestData}}if(include.user){let extractedUser=req.user&&is.isPlainObject(req.user)?extractUserData(req.user,include.user):{};Object.keys(extractedUser).length&&(event.user={...event.user,...extractedUser})}if(include.ip){let ip=req.ip||req.socket&&req.socket.remoteAddress;ip&&(event.user={...event.user,ip_address:ip})}return include.transaction&&!event.transaction&&(event.transaction=extractTransaction(req,include.transaction)),event}function extractQueryParams(req,deps){let originalUrl=req.originalUrl||req.url||"";if(originalUrl){originalUrl.startsWith("/")&&(originalUrl=`http://dogs.are.great${originalUrl}`);try{return req.query||typeof URL<"u"&&new URL(originalUrl).search.slice(1)||deps&&deps.url&&deps.url.parse(originalUrl).query||void 0}catch{return}}}function winterCGHeadersToDict(winterCGHeaders){let headers={};try{winterCGHeaders.forEach((value,key)=>{typeof value=="string"&&(headers[key]=value)})}catch{debugBuild.DEBUG_BUILD&&logger.logger.warn("Sentry failed extracting headers from a request object. If you see this, please file an issue.")}return headers}function winterCGRequestToRequestData(req){let headers=winterCGHeadersToDict(req.headers);return{method:req.method,url:req.url,headers}}exports.DEFAULT_USER_INCLUDES=DEFAULT_USER_INCLUDES;exports.addRequestDataToEvent=addRequestDataToEvent;exports.addRequestDataToTransaction=addRequestDataToTransaction;exports.extractPathForTransaction=extractPathForTransaction;exports.extractRequestData=extractRequestData;exports.winterCGHeadersToDict=winterCGHeadersToDict;exports.winterCGRequestToRequestData=winterCGRequestToRequestData}});var require_severity=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/severity.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var validSeverityLevels=["fatal","error","warning","log","info","debug"];function severityFromString(level){return severityLevelFromString(level)}function severityLevelFromString(level){return level==="warn"?"warning":validSeverityLevels.includes(level)?level:"log"}exports.severityFromString=severityFromString;exports.severityLevelFromString=severityLevelFromString;exports.validSeverityLevels=validSeverityLevels}});var require_time=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/time.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var worldwide=require_worldwide(),ONE_SECOND_IN_MS=1e3;function dateTimestampInSeconds(){return Date.now()/ONE_SECOND_IN_MS}function createUnixTimestampInSecondsFunc(){let{performance:performance2}=worldwide.GLOBAL_OBJ;if(!performance2||!performance2.now)return dateTimestampInSeconds;let approxStartingTimeOrigin=Date.now()-performance2.now(),timeOrigin=performance2.timeOrigin==null?approxStartingTimeOrigin:performance2.timeOrigin;return()=>(timeOrigin+performance2.now())/ONE_SECOND_IN_MS}var timestampInSeconds=createUnixTimestampInSecondsFunc(),timestampWithMs=timestampInSeconds;exports._browserPerformanceTimeOriginMode=void 0;var browserPerformanceTimeOrigin=(()=>{let{performance:performance2}=worldwide.GLOBAL_OBJ;if(!performance2||!performance2.now){exports._browserPerformanceTimeOriginMode="none";return}let threshold=3600*1e3,performanceNow=performance2.now(),dateNow=Date.now(),timeOriginDelta=performance2.timeOrigin?Math.abs(performance2.timeOrigin+performanceNow-dateNow):threshold,timeOriginIsReliable=timeOriginDelta<threshold,navigationStart=performance2.timing&&performance2.timing.navigationStart,navigationStartDelta=typeof navigationStart=="number"?Math.abs(navigationStart+performanceNow-dateNow):threshold,navigationStartIsReliable=navigationStartDelta<threshold;return timeOriginIsReliable||navigationStartIsReliable?timeOriginDelta<=navigationStartDelta?(exports._browserPerformanceTimeOriginMode="timeOrigin",performance2.timeOrigin):(exports._browserPerformanceTimeOriginMode="navigationStart",navigationStart):(exports._browserPerformanceTimeOriginMode="dateNow",dateNow)})();exports.browserPerformanceTimeOrigin=browserPerformanceTimeOrigin;exports.dateTimestampInSeconds=dateTimestampInSeconds;exports.timestampInSeconds=timestampInSeconds;exports.timestampWithMs=timestampWithMs}});var require_baggage=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/baggage.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var debugBuild=require_debug_build(),is=require_is(),logger=require_logger(),BAGGAGE_HEADER_NAME="baggage",SENTRY_BAGGAGE_KEY_PREFIX="sentry-",SENTRY_BAGGAGE_KEY_PREFIX_REGEX=/^sentry-/,MAX_BAGGAGE_STRING_LENGTH=8192;function baggageHeaderToDynamicSamplingContext(baggageHeader){if(!is.isString(baggageHeader)&&!Array.isArray(baggageHeader))return;let baggageObject={};if(Array.isArray(baggageHeader))baggageObject=baggageHeader.reduce((acc,curr)=>{let currBaggageObject=baggageHeaderToObject(curr);for(let key of Object.keys(currBaggageObject))acc[key]=currBaggageObject[key];return acc},{});else{if(!baggageHeader)return;baggageObject=baggageHeaderToObject(baggageHeader)}let dynamicSamplingContext=Object.entries(baggageObject).reduce((acc,[key,value])=>{if(key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)){let nonPrefixedKey=key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);acc[nonPrefixedKey]=value}return acc},{});if(Object.keys(dynamicSamplingContext).length>0)return dynamicSamplingContext}function dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext){if(!dynamicSamplingContext)return;let sentryPrefixedDSC=Object.entries(dynamicSamplingContext).reduce((acc,[dscKey,dscValue])=>(dscValue&&(acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`]=dscValue),acc),{});return objectToBaggageHeader(sentryPrefixedDSC)}function baggageHeaderToObject(baggageHeader){return baggageHeader.split(",").map(baggageEntry=>baggageEntry.split("=").map(keyOrValue=>decodeURIComponent(keyOrValue.trim()))).reduce((acc,[key,value])=>(acc[key]=value,acc),{})}function objectToBaggageHeader(object){if(Object.keys(object).length!==0)return Object.entries(object).reduce((baggageHeader,[objectKey,objectValue],currentIndex)=>{let baggageEntry=`${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`,newBaggageHeader=currentIndex===0?baggageEntry:`${baggageHeader},${baggageEntry}`;return newBaggageHeader.length>MAX_BAGGAGE_STRING_LENGTH?(debugBuild.DEBUG_BUILD&&logger.logger.warn(`Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`),baggageHeader):newBaggageHeader},"")}exports.BAGGAGE_HEADER_NAME=BAGGAGE_HEADER_NAME;exports.MAX_BAGGAGE_STRING_LENGTH=MAX_BAGGAGE_STRING_LENGTH;exports.SENTRY_BAGGAGE_KEY_PREFIX=SENTRY_BAGGAGE_KEY_PREFIX;exports.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=SENTRY_BAGGAGE_KEY_PREFIX_REGEX;exports.baggageHeaderToDynamicSamplingContext=baggageHeaderToDynamicSamplingContext;exports.dynamicSamplingContextToSentryBaggageHeader=dynamicSamplingContextToSentryBaggageHeader}});var require_tracing=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/tracing.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var baggage=require_baggage(),misc=require_misc(),TRACEPARENT_REGEXP=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function extractTraceparentData(traceparent){if(!traceparent)return;let matches=traceparent.match(TRACEPARENT_REGEXP);if(!matches)return;let parentSampled;return matches[3]==="1"?parentSampled=!0:matches[3]==="0"&&(parentSampled=!1),{traceId:matches[1],parentSampled,parentSpanId:matches[2]}}function tracingContextFromHeaders(sentryTrace,baggage$1){let traceparentData=extractTraceparentData(sentryTrace),dynamicSamplingContext=baggage.baggageHeaderToDynamicSamplingContext(baggage$1),{traceId,parentSpanId,parentSampled}=traceparentData||{};return traceparentData?{traceparentData,dynamicSamplingContext:dynamicSamplingContext||{},propagationContext:{traceId:traceId||misc.uuid4(),parentSpanId:parentSpanId||misc.uuid4().substring(16),spanId:misc.uuid4().substring(16),sampled:parentSampled,dsc:dynamicSamplingContext||{}}}:{traceparentData,dynamicSamplingContext:void 0,propagationContext:{traceId:traceId||misc.uuid4(),spanId:misc.uuid4().substring(16)}}}function propagationContextFromHeaders(sentryTrace,baggage$1){let traceparentData=extractTraceparentData(sentryTrace),dynamicSamplingContext=baggage.baggageHeaderToDynamicSamplingContext(baggage$1),{traceId,parentSpanId,parentSampled}=traceparentData||{};return traceparentData?{traceId:traceId||misc.uuid4(),parentSpanId:parentSpanId||misc.uuid4().substring(16),spanId:misc.uuid4().substring(16),sampled:parentSampled,dsc:dynamicSamplingContext||{}}:{traceId:traceId||misc.uuid4(),spanId:misc.uuid4().substring(16)}}function generateSentryTraceHeader(traceId=misc.uuid4(),spanId=misc.uuid4().substring(16),sampled){let sampledString="";return sampled!==void 0&&(sampledString=sampled?"-1":"-0"),`${traceId}-${spanId}${sampledString}`}exports.TRACEPARENT_REGEXP=TRACEPARENT_REGEXP;exports.extractTraceparentData=extractTraceparentData;exports.generateSentryTraceHeader=generateSentryTraceHeader;exports.propagationContextFromHeaders=propagationContextFromHeaders;exports.tracingContextFromHeaders=tracingContextFromHeaders}});var require_envelope=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/envelope.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var dsn=require_dsn(),normalize=require_normalize(),object=require_object();function createEnvelope(headers,items=[]){return[headers,items]}function addItemToEnvelope(envelope,newItem){let[headers,items]=envelope;return[headers,[...items,newItem]]}function forEachEnvelopeItem(envelope,callback){let envelopeItems=envelope[1];for(let envelopeItem of envelopeItems){let envelopeItemType=envelopeItem[0].type;if(callback(envelopeItem,envelopeItemType))return!0}return!1}function envelopeContainsItemType(envelope,types){return forEachEnvelopeItem(envelope,(_,type)=>types.includes(type))}function encodeUTF8(input,textEncoder){return(textEncoder||new TextEncoder).encode(input)}function serializeEnvelope(envelope,textEncoder){let[envHeaders,items]=envelope,parts=JSON.stringify(envHeaders);function append(next){typeof parts=="string"?parts=typeof next=="string"?parts+next:[encodeUTF8(parts,textEncoder),next]:parts.push(typeof next=="string"?encodeUTF8(next,textEncoder):next)}for(let item of items){let[itemHeaders,payload]=item;if(append(`
|
|
12
|
+
${JSON.stringify(itemHeaders)}
|
|
13
|
+
`),typeof payload=="string"||payload instanceof Uint8Array)append(payload);else{let stringifiedPayload;try{stringifiedPayload=JSON.stringify(payload)}catch{stringifiedPayload=JSON.stringify(normalize.normalize(payload))}append(stringifiedPayload)}}return typeof parts=="string"?parts:concatBuffers(parts)}function concatBuffers(buffers){let totalLength=buffers.reduce((acc,buf)=>acc+buf.length,0),merged=new Uint8Array(totalLength),offset=0;for(let buffer of buffers)merged.set(buffer,offset),offset+=buffer.length;return merged}function parseEnvelope(env,textEncoder,textDecoder){let buffer=typeof env=="string"?textEncoder.encode(env):env;function readBinary(length){let bin=buffer.subarray(0,length);return buffer=buffer.subarray(length+1),bin}function readJson(){let i=buffer.indexOf(10);return i<0&&(i=buffer.length),JSON.parse(textDecoder.decode(readBinary(i)))}let envelopeHeader=readJson(),items=[];for(;buffer.length;){let itemHeader=readJson(),binaryLength=typeof itemHeader.length=="number"?itemHeader.length:void 0;items.push([itemHeader,binaryLength?readBinary(binaryLength):readJson()])}return[envelopeHeader,items]}function createAttachmentEnvelopeItem(attachment,textEncoder){let buffer=typeof attachment.data=="string"?encodeUTF8(attachment.data,textEncoder):attachment.data;return[object.dropUndefinedKeys({type:"attachment",length:buffer.length,filename:attachment.filename,content_type:attachment.contentType,attachment_type:attachment.attachmentType}),buffer]}var ITEM_TYPE_TO_DATA_CATEGORY_MAP={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",statsd:"metric_bucket"};function envelopeItemTypeToDataCategory(type){return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type]}function getSdkMetadataForEnvelopeHeader(metadataOrEvent){if(!metadataOrEvent||!metadataOrEvent.sdk)return;let{name,version}=metadataOrEvent.sdk;return{name,version}}function createEventEnvelopeHeaders(event,sdkInfo,tunnel,dsn$1){let dynamicSamplingContext=event.sdkProcessingMetadata&&event.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:event.event_id,sent_at:new Date().toISOString(),...sdkInfo&&{sdk:sdkInfo},...!!tunnel&&dsn$1&&{dsn:dsn.dsnToString(dsn$1)},...dynamicSamplingContext&&{trace:object.dropUndefinedKeys({...dynamicSamplingContext})}}}exports.addItemToEnvelope=addItemToEnvelope;exports.createAttachmentEnvelopeItem=createAttachmentEnvelopeItem;exports.createEnvelope=createEnvelope;exports.createEventEnvelopeHeaders=createEventEnvelopeHeaders;exports.envelopeContainsItemType=envelopeContainsItemType;exports.envelopeItemTypeToDataCategory=envelopeItemTypeToDataCategory;exports.forEachEnvelopeItem=forEachEnvelopeItem;exports.getSdkMetadataForEnvelopeHeader=getSdkMetadataForEnvelopeHeader;exports.parseEnvelope=parseEnvelope;exports.serializeEnvelope=serializeEnvelope}});var require_clientreport=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/clientreport.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var envelope=require_envelope(),time=require_time();function createClientReportEnvelope(discarded_events,dsn,timestamp){let clientReportItem=[{type:"client_report"},{timestamp:timestamp||time.dateTimestampInSeconds(),discarded_events}];return envelope.createEnvelope(dsn?{dsn}:{},[clientReportItem])}exports.createClientReportEnvelope=createClientReportEnvelope}});var require_ratelimit=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/ratelimit.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEFAULT_RETRY_AFTER=60*1e3;function parseRetryAfterHeader(header,now=Date.now()){let headerDelay=parseInt(`${header}`,10);if(!isNaN(headerDelay))return headerDelay*1e3;let headerDate=Date.parse(`${header}`);return isNaN(headerDate)?DEFAULT_RETRY_AFTER:headerDate-now}function disabledUntil(limits,dataCategory){return limits[dataCategory]||limits.all||0}function isRateLimited(limits,dataCategory,now=Date.now()){return disabledUntil(limits,dataCategory)>now}function updateRateLimits(limits,{statusCode,headers},now=Date.now()){let updatedRateLimits={...limits},rateLimitHeader=headers&&headers["x-sentry-rate-limits"],retryAfterHeader=headers&&headers["retry-after"];if(rateLimitHeader)for(let limit of rateLimitHeader.trim().split(",")){let[retryAfter,categories,,,namespaces]=limit.split(":",5),headerDelay=parseInt(retryAfter,10),delay=(isNaN(headerDelay)?60:headerDelay)*1e3;if(!categories)updatedRateLimits.all=now+delay;else for(let category of categories.split(";"))category==="metric_bucket"?(!namespaces||namespaces.split(";").includes("custom"))&&(updatedRateLimits[category]=now+delay):updatedRateLimits[category]=now+delay}else retryAfterHeader?updatedRateLimits.all=now+parseRetryAfterHeader(retryAfterHeader,now):statusCode===429&&(updatedRateLimits.all=now+60*1e3);return updatedRateLimits}exports.DEFAULT_RETRY_AFTER=DEFAULT_RETRY_AFTER;exports.disabledUntil=disabledUntil;exports.isRateLimited=isRateLimited;exports.parseRetryAfterHeader=parseRetryAfterHeader;exports.updateRateLimits=updateRateLimits}});var require_userIntegrations=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/userIntegrations.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function setNestedKey(obj,keyPath,value){let match=keyPath.match(/([a-z_]+)\.(.*)/i);if(match===null)obj[keyPath]=value;else{let innerObj=obj[match[1]];setNestedKey(innerObj,match[2],value)}}function addOrUpdateIntegration(defaultIntegrationInstance,userIntegrations,forcedOptions={}){return Array.isArray(userIntegrations)?addOrUpdateIntegrationInArray(defaultIntegrationInstance,userIntegrations,forcedOptions):addOrUpdateIntegrationInFunction(defaultIntegrationInstance,userIntegrations,forcedOptions)}function addOrUpdateIntegrationInArray(defaultIntegrationInstance,userIntegrations,forcedOptions){let userInstance=userIntegrations.find(integration=>integration.name===defaultIntegrationInstance.name);if(userInstance){for(let[keyPath,value]of Object.entries(forcedOptions))setNestedKey(userInstance,keyPath,value);return userIntegrations}return[...userIntegrations,defaultIntegrationInstance]}function addOrUpdateIntegrationInFunction(defaultIntegrationInstance,userIntegrationsFunc,forcedOptions){return defaultIntegrations=>{let userFinalIntegrations=userIntegrationsFunc(defaultIntegrations);return defaultIntegrationInstance.allowExclusionByUser&&!userFinalIntegrations.find(integration=>integration.name===defaultIntegrationInstance.name)?userFinalIntegrations:addOrUpdateIntegrationInArray(defaultIntegrationInstance,userFinalIntegrations,forcedOptions)}}exports.addOrUpdateIntegration=addOrUpdateIntegration}});var require_cache=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/cache.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function makeFifoCache(size){let evictionOrder=[],cache={};return{add(key,value){for(;evictionOrder.length>=size;){let evictCandidate=evictionOrder.shift();evictCandidate!==void 0&&delete cache[evictCandidate]}cache[key]&&this.delete(key),evictionOrder.push(key),cache[key]=value},clear(){cache={},evictionOrder=[]},get(key){return cache[key]},size(){return evictionOrder.length},delete(key){if(!cache[key])return!1;delete cache[key];for(let i=0;i<evictionOrder.length;i++)if(evictionOrder[i]===key){evictionOrder.splice(i,1);break}return!0}}}exports.makeFifoCache=makeFifoCache}});var require_eventbuilder=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/eventbuilder.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var is=require_is(),misc=require_misc(),normalize=require_normalize(),object=require_object();function parseStackFrames(stackParser,error){return stackParser(error.stack||"",1)}function exceptionFromError(stackParser,error){let exception={type:error.name||error.constructor.name,value:error.message},frames=parseStackFrames(stackParser,error);return frames.length&&(exception.stacktrace={frames}),exception}function getMessageForObject(exception){if("name"in exception&&typeof exception.name=="string"){let message=`'${exception.name}' captured as exception`;return"message"in exception&&typeof exception.message=="string"&&(message+=` with message '${exception.message}'`),message}else return"message"in exception&&typeof exception.message=="string"?exception.message:`Object captured as exception with keys: ${object.extractExceptionKeysForMessage(exception)}`}function eventFromUnknownInput(getHubOrClient,stackParser,exception,hint){let client=typeof getHubOrClient=="function"?getHubOrClient().getClient():getHubOrClient,ex=exception,mechanism=hint&&hint.data&&hint.data.mechanism||{handled:!0,type:"generic"},extras;if(!is.isError(exception)){if(is.isPlainObject(exception)){let normalizeDepth=client&&client.getOptions().normalizeDepth;extras={__serialized__:normalize.normalizeToSize(exception,normalizeDepth)};let message=getMessageForObject(exception);ex=hint&&hint.syntheticException||new Error(message),ex.message=message}else ex=hint&&hint.syntheticException||new Error(exception),ex.message=exception;mechanism.synthetic=!0}let event={exception:{values:[exceptionFromError(stackParser,ex)]}};return extras&&(event.extra=extras),misc.addExceptionTypeValue(event,void 0,void 0),misc.addExceptionMechanism(event,mechanism),{...event,event_id:hint&&hint.event_id}}function eventFromMessage(stackParser,message,level="info",hint,attachStacktrace){let event={event_id:hint&&hint.event_id,level};if(attachStacktrace&&hint&&hint.syntheticException){let frames=parseStackFrames(stackParser,hint.syntheticException);frames.length&&(event.exception={values:[{value:message,stacktrace:{frames}}]})}if(is.isParameterizedString(message)){let{__sentry_template_string__,__sentry_template_values__}=message;return event.logentry={message:__sentry_template_string__,params:__sentry_template_values__},event}return event.message=message,event}exports.eventFromMessage=eventFromMessage;exports.eventFromUnknownInput=eventFromUnknownInput;exports.exceptionFromError=exceptionFromError;exports.parseStackFrames=parseStackFrames}});var require_anr=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/anr.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var object=require_object(),nodeStackTrace=require_node_stack_trace();function watchdogTimer(createTimer,pollInterval,anrThreshold,callback){let timer=createTimer(),triggered=!1,enabled=!0;return setInterval(()=>{let diffMs=timer.getTimeMs();triggered===!1&&diffMs>pollInterval+anrThreshold&&(triggered=!0,enabled&&callback()),diffMs<pollInterval+anrThreshold&&(triggered=!1)},20),{poll:()=>{timer.reset()},enabled:state=>{enabled=state}}}function callFrameToStackFrame(frame,url,getModuleFromFilename){let filename=url?url.replace(/^file:\/\//,""):void 0,colno=frame.location.columnNumber?frame.location.columnNumber+1:void 0,lineno=frame.location.lineNumber?frame.location.lineNumber+1:void 0;return object.dropUndefinedKeys({filename,module:getModuleFromFilename(filename),function:frame.functionName||"?",colno,lineno,in_app:filename?nodeStackTrace.filenameIsInApp(filename):void 0})}exports.callFrameToStackFrame=callFrameToStackFrame;exports.watchdogTimer=watchdogTimer}});var require_lru=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/lru.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var LRUMap=class{constructor(_maxSize){this._maxSize=_maxSize,this._cache=new Map}get size(){return this._cache.size}get(key){let value=this._cache.get(key);if(value!==void 0)return this._cache.delete(key),this._cache.set(key,value),value}set(key,value){this._cache.size>=this._maxSize&&this._cache.delete(this._cache.keys().next().value),this._cache.set(key,value)}remove(key){let value=this._cache.get(key);return value&&this._cache.delete(key),value}clear(){this._cache.clear()}keys(){return Array.from(this._cache.keys())}values(){let values=[];return this._cache.forEach(value=>values.push(value)),values}};exports.LRUMap=LRUMap}});var require_nullishCoalesce=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_nullishCoalesce.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function _nullishCoalesce(lhs,rhsFn){return lhs??rhsFn()}exports._nullishCoalesce=_nullishCoalesce}});var require_asyncNullishCoalesce=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncNullishCoalesce.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var _nullishCoalesce=require_nullishCoalesce();async function _asyncNullishCoalesce(lhs,rhsFn){return _nullishCoalesce._nullishCoalesce(lhs,rhsFn)}exports._asyncNullishCoalesce=_asyncNullishCoalesce}});var require_asyncOptionalChain=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChain.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});async function _asyncOptionalChain(ops){let lastAccessLHS,value=ops[0],i=1;for(;i<ops.length;){let op=ops[i],fn=ops[i+1];if(i+=2,(op==="optionalAccess"||op==="optionalCall")&&value==null)return;op==="access"||op==="optionalAccess"?(lastAccessLHS=value,value=await fn(value)):(op==="call"||op==="optionalCall")&&(value=await fn((...args)=>value.call(lastAccessLHS,...args)),lastAccessLHS=void 0)}return value}exports._asyncOptionalChain=_asyncOptionalChain}});var require_asyncOptionalChainDelete=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_asyncOptionalChainDelete.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var _asyncOptionalChain=require_asyncOptionalChain();async function _asyncOptionalChainDelete(ops){let result=await _asyncOptionalChain._asyncOptionalChain(ops);return result??!0}exports._asyncOptionalChainDelete=_asyncOptionalChainDelete}});var require_optionalChain=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChain.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function _optionalChain(ops){let lastAccessLHS,value=ops[0],i=1;for(;i<ops.length;){let op=ops[i],fn=ops[i+1];if(i+=2,(op==="optionalAccess"||op==="optionalCall")&&value==null)return;op==="access"||op==="optionalAccess"?(lastAccessLHS=value,value=fn(value)):(op==="call"||op==="optionalCall")&&(value=fn((...args)=>value.call(lastAccessLHS,...args)),lastAccessLHS=void 0)}return value}exports._optionalChain=_optionalChain}});var require_optionalChainDelete=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/buildPolyfills/_optionalChainDelete.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var _optionalChain=require_optionalChain();function _optionalChainDelete(ops){let result=_optionalChain._optionalChain(ops);return result??!0}exports._optionalChainDelete=_optionalChainDelete}});var require_escapeStringForRegex=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/vendor/escapeStringForRegex.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function escapeStringForRegex(regexString){return regexString.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}exports.escapeStringForRegex=escapeStringForRegex}});var require_cjs=__commonJS({"../../node_modules/.pnpm/@sentry+utils@7.120.1/node_modules/@sentry/utils/cjs/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var aggregateErrors=require_aggregate_errors(),browser=require_browser(),dsn=require_dsn(),error=require_error(),worldwide=require_worldwide(),index=require_instrument(),is=require_is(),isBrowser=require_isBrowser(),logger=require_logger(),memo=require_memo(),misc=require_misc(),node=require_node(),normalize=require_normalize(),object=require_object(),path=require_path(),promisebuffer=require_promisebuffer(),requestdata=require_requestdata(),severity=require_severity(),stacktrace=require_stacktrace(),string=require_string(),supports=require_supports(),syncpromise=require_syncpromise(),time=require_time(),tracing=require_tracing(),env=require_env(),envelope=require_envelope(),clientreport=require_clientreport(),ratelimit=require_ratelimit(),baggage=require_baggage(),url=require_url(),userIntegrations=require_userIntegrations(),cache=require_cache(),eventbuilder=require_eventbuilder(),anr=require_anr(),lru=require_lru(),_asyncNullishCoalesce=require_asyncNullishCoalesce(),_asyncOptionalChain=require_asyncOptionalChain(),_asyncOptionalChainDelete=require_asyncOptionalChainDelete(),_nullishCoalesce=require_nullishCoalesce(),_optionalChain=require_optionalChain(),_optionalChainDelete=require_optionalChainDelete(),console2=require_console(),dom=require_dom(),xhr=require_xhr(),fetch2=require_fetch(),history=require_history(),globalError=require_globalError(),globalUnhandledRejection=require_globalUnhandledRejection(),_handlers=require_handlers(),nodeStackTrace=require_node_stack_trace(),escapeStringForRegex=require_escapeStringForRegex(),supportsHistory=require_supportsHistory();exports.applyAggregateErrorsToEvent=aggregateErrors.applyAggregateErrorsToEvent;exports.getComponentName=browser.getComponentName;exports.getDomElement=browser.getDomElement;exports.getLocationHref=browser.getLocationHref;exports.htmlTreeAsString=browser.htmlTreeAsString;exports.dsnFromString=dsn.dsnFromString;exports.dsnToString=dsn.dsnToString;exports.makeDsn=dsn.makeDsn;exports.SentryError=error.SentryError;exports.GLOBAL_OBJ=worldwide.GLOBAL_OBJ;exports.getGlobalObject=worldwide.getGlobalObject;exports.getGlobalSingleton=worldwide.getGlobalSingleton;exports.addInstrumentationHandler=index.addInstrumentationHandler;exports.isDOMError=is.isDOMError;exports.isDOMException=is.isDOMException;exports.isElement=is.isElement;exports.isError=is.isError;exports.isErrorEvent=is.isErrorEvent;exports.isEvent=is.isEvent;exports.isInstanceOf=is.isInstanceOf;exports.isNaN=is.isNaN;exports.isParameterizedString=is.isParameterizedString;exports.isPlainObject=is.isPlainObject;exports.isPrimitive=is.isPrimitive;exports.isRegExp=is.isRegExp;exports.isString=is.isString;exports.isSyntheticEvent=is.isSyntheticEvent;exports.isThenable=is.isThenable;exports.isVueViewModel=is.isVueViewModel;exports.isBrowser=isBrowser.isBrowser;exports.CONSOLE_LEVELS=logger.CONSOLE_LEVELS;exports.consoleSandbox=logger.consoleSandbox;exports.logger=logger.logger;exports.originalConsoleMethods=logger.originalConsoleMethods;exports.memoBuilder=memo.memoBuilder;exports.addContextToFrame=misc.addContextToFrame;exports.addExceptionMechanism=misc.addExceptionMechanism;exports.addExceptionTypeValue=misc.addExceptionTypeValue;exports.arrayify=misc.arrayify;exports.checkOrSetAlreadyCaught=misc.checkOrSetAlreadyCaught;exports.getEventDescription=misc.getEventDescription;exports.parseSemver=misc.parseSemver;exports.uuid4=misc.uuid4;exports.dynamicRequire=node.dynamicRequire;exports.isNodeEnv=node.isNodeEnv;exports.loadModule=node.loadModule;exports.normalize=normalize.normalize;exports.normalizeToSize=normalize.normalizeToSize;exports.normalizeUrlToBase=normalize.normalizeUrlToBase;exports.walk=normalize.walk;exports.addNonEnumerableProperty=object.addNonEnumerableProperty;exports.convertToPlainObject=object.convertToPlainObject;exports.dropUndefinedKeys=object.dropUndefinedKeys;exports.extractExceptionKeysForMessage=object.extractExceptionKeysForMessage;exports.fill=object.fill;exports.getOriginalFunction=object.getOriginalFunction;exports.markFunctionWrapped=object.markFunctionWrapped;exports.objectify=object.objectify;exports.urlEncode=object.urlEncode;exports.basename=path.basename;exports.dirname=path.dirname;exports.isAbsolute=path.isAbsolute;exports.join=path.join;exports.normalizePath=path.normalizePath;exports.relative=path.relative;exports.resolve=path.resolve;exports.makePromiseBuffer=promisebuffer.makePromiseBuffer;exports.DEFAULT_USER_INCLUDES=requestdata.DEFAULT_USER_INCLUDES;exports.addRequestDataToEvent=requestdata.addRequestDataToEvent;exports.addRequestDataToTransaction=requestdata.addRequestDataToTransaction;exports.extractPathForTransaction=requestdata.extractPathForTransaction;exports.extractRequestData=requestdata.extractRequestData;exports.winterCGHeadersToDict=requestdata.winterCGHeadersToDict;exports.winterCGRequestToRequestData=requestdata.winterCGRequestToRequestData;exports.severityFromString=severity.severityFromString;exports.severityLevelFromString=severity.severityLevelFromString;exports.validSeverityLevels=severity.validSeverityLevels;exports.createStackParser=stacktrace.createStackParser;exports.getFunctionName=stacktrace.getFunctionName;exports.nodeStackLineParser=stacktrace.nodeStackLineParser;exports.stackParserFromStackParserOptions=stacktrace.stackParserFromStackParserOptions;exports.stripSentryFramesAndReverse=stacktrace.stripSentryFramesAndReverse;exports.isMatchingPattern=string.isMatchingPattern;exports.safeJoin=string.safeJoin;exports.snipLine=string.snipLine;exports.stringMatchesSomePattern=string.stringMatchesSomePattern;exports.truncate=string.truncate;exports.isNativeFetch=supports.isNativeFetch;exports.supportsDOMError=supports.supportsDOMError;exports.supportsDOMException=supports.supportsDOMException;exports.supportsErrorEvent=supports.supportsErrorEvent;exports.supportsFetch=supports.supportsFetch;exports.supportsNativeFetch=supports.supportsNativeFetch;exports.supportsReferrerPolicy=supports.supportsReferrerPolicy;exports.supportsReportingObserver=supports.supportsReportingObserver;exports.SyncPromise=syncpromise.SyncPromise;exports.rejectedSyncPromise=syncpromise.rejectedSyncPromise;exports.resolvedSyncPromise=syncpromise.resolvedSyncPromise;Object.defineProperty(exports,"_browserPerformanceTimeOriginMode",{enumerable:!0,get:()=>time._browserPerformanceTimeOriginMode});exports.browserPerformanceTimeOrigin=time.browserPerformanceTimeOrigin;exports.dateTimestampInSeconds=time.dateTimestampInSeconds;exports.timestampInSeconds=time.timestampInSeconds;exports.timestampWithMs=time.timestampWithMs;exports.TRACEPARENT_REGEXP=tracing.TRACEPARENT_REGEXP;exports.extractTraceparentData=tracing.extractTraceparentData;exports.generateSentryTraceHeader=tracing.generateSentryTraceHeader;exports.propagationContextFromHeaders=tracing.propagationContextFromHeaders;exports.tracingContextFromHeaders=tracing.tracingContextFromHeaders;exports.getSDKSource=env.getSDKSource;exports.isBrowserBundle=env.isBrowserBundle;exports.addItemToEnvelope=envelope.addItemToEnvelope;exports.createAttachmentEnvelopeItem=envelope.createAttachmentEnvelopeItem;exports.createEnvelope=envelope.createEnvelope;exports.createEventEnvelopeHeaders=envelope.createEventEnvelopeHeaders;exports.envelopeContainsItemType=envelope.envelopeContainsItemType;exports.envelopeItemTypeToDataCategory=envelope.envelopeItemTypeToDataCategory;exports.forEachEnvelopeItem=envelope.forEachEnvelopeItem;exports.getSdkMetadataForEnvelopeHeader=envelope.getSdkMetadataForEnvelopeHeader;exports.parseEnvelope=envelope.parseEnvelope;exports.serializeEnvelope=envelope.serializeEnvelope;exports.createClientReportEnvelope=clientreport.createClientReportEnvelope;exports.DEFAULT_RETRY_AFTER=ratelimit.DEFAULT_RETRY_AFTER;exports.disabledUntil=ratelimit.disabledUntil;exports.isRateLimited=ratelimit.isRateLimited;exports.parseRetryAfterHeader=ratelimit.parseRetryAfterHeader;exports.updateRateLimits=ratelimit.updateRateLimits;exports.BAGGAGE_HEADER_NAME=baggage.BAGGAGE_HEADER_NAME;exports.MAX_BAGGAGE_STRING_LENGTH=baggage.MAX_BAGGAGE_STRING_LENGTH;exports.SENTRY_BAGGAGE_KEY_PREFIX=baggage.SENTRY_BAGGAGE_KEY_PREFIX;exports.SENTRY_BAGGAGE_KEY_PREFIX_REGEX=baggage.SENTRY_BAGGAGE_KEY_PREFIX_REGEX;exports.baggageHeaderToDynamicSamplingContext=baggage.baggageHeaderToDynamicSamplingContext;exports.dynamicSamplingContextToSentryBaggageHeader=baggage.dynamicSamplingContextToSentryBaggageHeader;exports.getNumberOfUrlSegments=url.getNumberOfUrlSegments;exports.getSanitizedUrlString=url.getSanitizedUrlString;exports.parseUrl=url.parseUrl;exports.stripUrlQueryAndFragment=url.stripUrlQueryAndFragment;exports.addOrUpdateIntegration=userIntegrations.addOrUpdateIntegration;exports.makeFifoCache=cache.makeFifoCache;exports.eventFromMessage=eventbuilder.eventFromMessage;exports.eventFromUnknownInput=eventbuilder.eventFromUnknownInput;exports.exceptionFromError=eventbuilder.exceptionFromError;exports.parseStackFrames=eventbuilder.parseStackFrames;exports.callFrameToStackFrame=anr.callFrameToStackFrame;exports.watchdogTimer=anr.watchdogTimer;exports.LRUMap=lru.LRUMap;exports._asyncNullishCoalesce=_asyncNullishCoalesce._asyncNullishCoalesce;exports._asyncOptionalChain=_asyncOptionalChain._asyncOptionalChain;exports._asyncOptionalChainDelete=_asyncOptionalChainDelete._asyncOptionalChainDelete;exports._nullishCoalesce=_nullishCoalesce._nullishCoalesce;exports._optionalChain=_optionalChain._optionalChain;exports._optionalChainDelete=_optionalChainDelete._optionalChainDelete;exports.addConsoleInstrumentationHandler=console2.addConsoleInstrumentationHandler;exports.addClickKeypressInstrumentationHandler=dom.addClickKeypressInstrumentationHandler;exports.SENTRY_XHR_DATA_KEY=xhr.SENTRY_XHR_DATA_KEY;exports.addXhrInstrumentationHandler=xhr.addXhrInstrumentationHandler;exports.addFetchInstrumentationHandler=fetch2.addFetchInstrumentationHandler;exports.addHistoryInstrumentationHandler=history.addHistoryInstrumentationHandler;exports.addGlobalErrorInstrumentationHandler=globalError.addGlobalErrorInstrumentationHandler;exports.addGlobalUnhandledRejectionInstrumentationHandler=globalUnhandledRejection.addGlobalUnhandledRejectionInstrumentationHandler;exports.resetInstrumentationHandlers=_handlers.resetInstrumentationHandlers;exports.filenameIsInApp=nodeStackTrace.filenameIsInApp;exports.escapeStringForRegex=escapeStringForRegex.escapeStringForRegex;exports.supportsHistory=supportsHistory.supportsHistory}});var require_debug_build2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/debug-build.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEBUG_BUILD=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;exports.DEBUG_BUILD=DEBUG_BUILD}});var require_constants=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/constants.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEFAULT_ENVIRONMENT="production";exports.DEFAULT_ENVIRONMENT=DEFAULT_ENVIRONMENT}});var require_eventProcessors=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/eventProcessors.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2();function getGlobalEventProcessors(){return utils.getGlobalSingleton("globalEventProcessors",()=>[])}function addGlobalEventProcessor(callback){getGlobalEventProcessors().push(callback)}function notifyEventProcessors(processors,event,hint,index=0){return new utils.SyncPromise((resolve,reject)=>{let processor=processors[index];if(event===null||typeof processor!="function")resolve(event);else{let result=processor({...event},hint);debugBuild.DEBUG_BUILD&&processor.id&&result===null&&utils.logger.log(`Event processor "${processor.id}" dropped event`),utils.isThenable(result)?result.then(final=>notifyEventProcessors(processors,final,hint,index+1).then(resolve)).then(null,reject):notifyEventProcessors(processors,result,hint,index+1).then(resolve).then(null,reject)}})}exports.addGlobalEventProcessor=addGlobalEventProcessor;exports.getGlobalEventProcessors=getGlobalEventProcessors;exports.notifyEventProcessors=notifyEventProcessors}});var require_session=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/session.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function makeSession(context){let startingTime=utils.timestampInSeconds(),session={sid:utils.uuid4(),init:!0,timestamp:startingTime,started:startingTime,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>sessionToJSON(session)};return context&&updateSession(session,context),session}function updateSession(session,context={}){if(context.user&&(!session.ipAddress&&context.user.ip_address&&(session.ipAddress=context.user.ip_address),!session.did&&!context.did&&(session.did=context.user.id||context.user.email||context.user.username)),session.timestamp=context.timestamp||utils.timestampInSeconds(),context.abnormal_mechanism&&(session.abnormal_mechanism=context.abnormal_mechanism),context.ignoreDuration&&(session.ignoreDuration=context.ignoreDuration),context.sid&&(session.sid=context.sid.length===32?context.sid:utils.uuid4()),context.init!==void 0&&(session.init=context.init),!session.did&&context.did&&(session.did=`${context.did}`),typeof context.started=="number"&&(session.started=context.started),session.ignoreDuration)session.duration=void 0;else if(typeof context.duration=="number")session.duration=context.duration;else{let duration=session.timestamp-session.started;session.duration=duration>=0?duration:0}context.release&&(session.release=context.release),context.environment&&(session.environment=context.environment),!session.ipAddress&&context.ipAddress&&(session.ipAddress=context.ipAddress),!session.userAgent&&context.userAgent&&(session.userAgent=context.userAgent),typeof context.errors=="number"&&(session.errors=context.errors),context.status&&(session.status=context.status)}function closeSession(session,status){let context={};status?context={status}:session.status==="ok"&&(context={status:"exited"}),updateSession(session,context)}function sessionToJSON(session){return utils.dropUndefinedKeys({sid:`${session.sid}`,init:session.init,started:new Date(session.started*1e3).toISOString(),timestamp:new Date(session.timestamp*1e3).toISOString(),status:session.status,errors:session.errors,did:typeof session.did=="number"||typeof session.did=="string"?`${session.did}`:void 0,duration:session.duration,abnormal_mechanism:session.abnormal_mechanism,attrs:{release:session.release,environment:session.environment,ip_address:session.ipAddress,user_agent:session.userAgent}})}exports.closeSession=closeSession;exports.makeSession=makeSession;exports.updateSession=updateSession}});var require_spanUtils=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/spanUtils.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),TRACE_FLAG_NONE=0,TRACE_FLAG_SAMPLED=1;function spanToTraceContext(span){let{spanId:span_id,traceId:trace_id}=span.spanContext(),{data,op,parent_span_id,status,tags,origin}=spanToJSON(span);return utils.dropUndefinedKeys({data,op,parent_span_id,span_id,status,tags,trace_id,origin})}function spanToTraceHeader(span){let{traceId,spanId}=span.spanContext(),sampled=spanIsSampled(span);return utils.generateSentryTraceHeader(traceId,spanId,sampled)}function spanTimeInputToSeconds(input){return typeof input=="number"?ensureTimestampInSeconds(input):Array.isArray(input)?input[0]+input[1]/1e9:input instanceof Date?ensureTimestampInSeconds(input.getTime()):utils.timestampInSeconds()}function ensureTimestampInSeconds(timestamp){return timestamp>9999999999?timestamp/1e3:timestamp}function spanToJSON(span){return spanIsSpanClass(span)?span.getSpanJSON():typeof span.toJSON=="function"?span.toJSON():{}}function spanIsSpanClass(span){return typeof span.getSpanJSON=="function"}function spanIsSampled(span){let{traceFlags}=span.spanContext();return!!(traceFlags&TRACE_FLAG_SAMPLED)}exports.TRACE_FLAG_NONE=TRACE_FLAG_NONE;exports.TRACE_FLAG_SAMPLED=TRACE_FLAG_SAMPLED;exports.spanIsSampled=spanIsSampled;exports.spanTimeInputToSeconds=spanTimeInputToSeconds;exports.spanToJSON=spanToJSON;exports.spanToTraceContext=spanToTraceContext;exports.spanToTraceHeader=spanToTraceHeader}});var require_prepareEvent=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/prepareEvent.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),constants=require_constants(),eventProcessors=require_eventProcessors(),scope=require_scope(),applyScopeDataToEvent=require_applyScopeDataToEvent(),spanUtils=require_spanUtils();function prepareEvent(options,event,hint,scope$1,client,isolationScope){let{normalizeDepth=3,normalizeMaxBreadth=1e3}=options,prepared={...event,event_id:event.event_id||hint.event_id||utils.uuid4(),timestamp:event.timestamp||utils.dateTimestampInSeconds()},integrations=hint.integrations||options.integrations.map(i=>i.name);applyClientOptions(prepared,options),applyIntegrationsMetadata(prepared,integrations),event.type===void 0&&applyDebugIds(prepared,options.stackParser);let finalScope=getFinalScope(scope$1,hint.captureContext);hint.mechanism&&utils.addExceptionMechanism(prepared,hint.mechanism);let clientEventProcessors=client&&client.getEventProcessors?client.getEventProcessors():[],data=scope.getGlobalScope().getScopeData();if(isolationScope){let isolationData=isolationScope.getScopeData();applyScopeDataToEvent.mergeScopeData(data,isolationData)}if(finalScope){let finalScopeData=finalScope.getScopeData();applyScopeDataToEvent.mergeScopeData(data,finalScopeData)}let attachments=[...hint.attachments||[],...data.attachments];attachments.length&&(hint.attachments=attachments),applyScopeDataToEvent.applyScopeDataToEvent(prepared,data);let eventProcessors$1=[...clientEventProcessors,...eventProcessors.getGlobalEventProcessors(),...data.eventProcessors];return eventProcessors.notifyEventProcessors(eventProcessors$1,prepared,hint).then(evt=>(evt&&applyDebugMeta(evt),typeof normalizeDepth=="number"&&normalizeDepth>0?normalizeEvent(evt,normalizeDepth,normalizeMaxBreadth):evt))}function applyClientOptions(event,options){let{environment,release,dist,maxValueLength=250}=options;"environment"in event||(event.environment="environment"in options?environment:constants.DEFAULT_ENVIRONMENT),event.release===void 0&&release!==void 0&&(event.release=release),event.dist===void 0&&dist!==void 0&&(event.dist=dist),event.message&&(event.message=utils.truncate(event.message,maxValueLength));let exception=event.exception&&event.exception.values&&event.exception.values[0];exception&&exception.value&&(exception.value=utils.truncate(exception.value,maxValueLength));let request=event.request;request&&request.url&&(request.url=utils.truncate(request.url,maxValueLength))}var debugIdStackParserCache=new WeakMap;function applyDebugIds(event,stackParser){let debugIdMap=utils.GLOBAL_OBJ._sentryDebugIds;if(!debugIdMap)return;let debugIdStackFramesCache,cachedDebugIdStackFrameCache=debugIdStackParserCache.get(stackParser);cachedDebugIdStackFrameCache?debugIdStackFramesCache=cachedDebugIdStackFrameCache:(debugIdStackFramesCache=new Map,debugIdStackParserCache.set(stackParser,debugIdStackFramesCache));let filenameDebugIdMap=Object.keys(debugIdMap).reduce((acc,debugIdStackTrace)=>{let parsedStack,cachedParsedStack=debugIdStackFramesCache.get(debugIdStackTrace);cachedParsedStack?parsedStack=cachedParsedStack:(parsedStack=stackParser(debugIdStackTrace),debugIdStackFramesCache.set(debugIdStackTrace,parsedStack));for(let i=parsedStack.length-1;i>=0;i--){let stackFrame=parsedStack[i];if(stackFrame.filename){acc[stackFrame.filename]=debugIdMap[debugIdStackTrace];break}}return acc},{});try{event.exception.values.forEach(exception=>{exception.stacktrace.frames.forEach(frame=>{frame.filename&&(frame.debug_id=filenameDebugIdMap[frame.filename])})})}catch{}}function applyDebugMeta(event){let filenameDebugIdMap={};try{event.exception.values.forEach(exception=>{exception.stacktrace.frames.forEach(frame=>{frame.debug_id&&(frame.abs_path?filenameDebugIdMap[frame.abs_path]=frame.debug_id:frame.filename&&(filenameDebugIdMap[frame.filename]=frame.debug_id),delete frame.debug_id)})})}catch{}if(Object.keys(filenameDebugIdMap).length===0)return;event.debug_meta=event.debug_meta||{},event.debug_meta.images=event.debug_meta.images||[];let images=event.debug_meta.images;Object.keys(filenameDebugIdMap).forEach(filename=>{images.push({type:"sourcemap",code_file:filename,debug_id:filenameDebugIdMap[filename]})})}function applyIntegrationsMetadata(event,integrationNames){integrationNames.length>0&&(event.sdk=event.sdk||{},event.sdk.integrations=[...event.sdk.integrations||[],...integrationNames])}function normalizeEvent(event,depth,maxBreadth){if(!event)return null;let normalized={...event,...event.breadcrumbs&&{breadcrumbs:event.breadcrumbs.map(b=>({...b,...b.data&&{data:utils.normalize(b.data,depth,maxBreadth)}}))},...event.user&&{user:utils.normalize(event.user,depth,maxBreadth)},...event.contexts&&{contexts:utils.normalize(event.contexts,depth,maxBreadth)},...event.extra&&{extra:utils.normalize(event.extra,depth,maxBreadth)}};return event.contexts&&event.contexts.trace&&normalized.contexts&&(normalized.contexts.trace=event.contexts.trace,event.contexts.trace.data&&(normalized.contexts.trace.data=utils.normalize(event.contexts.trace.data,depth,maxBreadth))),event.spans&&(normalized.spans=event.spans.map(span=>{let data=spanUtils.spanToJSON(span).data;return data&&(span.data=utils.normalize(data,depth,maxBreadth)),span})),normalized}function getFinalScope(scope$1,captureContext){if(!captureContext)return scope$1;let finalScope=scope$1?scope$1.clone():new scope.Scope;return finalScope.update(captureContext),finalScope}function parseEventHintOrCaptureContext(hint){if(hint)return hintIsScopeOrFunction(hint)?{captureContext:hint}:hintIsScopeContext(hint)?{captureContext:hint}:hint}function hintIsScopeOrFunction(hint){return hint instanceof scope.Scope||typeof hint=="function"}var captureContextKeys=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"];function hintIsScopeContext(hint){return Object.keys(hint).some(key=>captureContextKeys.includes(key))}exports.applyDebugIds=applyDebugIds;exports.applyDebugMeta=applyDebugMeta;exports.parseEventHintOrCaptureContext=parseEventHintOrCaptureContext;exports.prepareEvent=prepareEvent}});var require_exports=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/exports.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),constants=require_constants(),debugBuild=require_debug_build2(),hub=require_hub(),session=require_session(),prepareEvent=require_prepareEvent();function captureException(exception,hint){return hub.getCurrentHub().captureException(exception,prepareEvent.parseEventHintOrCaptureContext(hint))}function captureMessage(message,captureContext){let level=typeof captureContext=="string"?captureContext:void 0,context=typeof captureContext!="string"?{captureContext}:void 0;return hub.getCurrentHub().captureMessage(message,level,context)}function captureEvent(event,hint){return hub.getCurrentHub().captureEvent(event,hint)}function configureScope(callback){hub.getCurrentHub().configureScope(callback)}function addBreadcrumb(breadcrumb,hint){hub.getCurrentHub().addBreadcrumb(breadcrumb,hint)}function setContext(name,context){hub.getCurrentHub().setContext(name,context)}function setExtras(extras){hub.getCurrentHub().setExtras(extras)}function setExtra(key,extra){hub.getCurrentHub().setExtra(key,extra)}function setTags(tags){hub.getCurrentHub().setTags(tags)}function setTag(key,value){hub.getCurrentHub().setTag(key,value)}function setUser(user){hub.getCurrentHub().setUser(user)}function withScope(...rest){let hub$1=hub.getCurrentHub();if(rest.length===2){let[scope,callback]=rest;return scope?hub$1.withScope(()=>(hub$1.getStackTop().scope=scope,callback(scope))):hub$1.withScope(callback)}return hub$1.withScope(rest[0])}function withIsolationScope(callback){return hub.runWithAsyncContext(()=>callback(hub.getIsolationScope()))}function withActiveSpan(span,callback){return withScope(scope=>(scope.setSpan(span),callback(scope)))}function startTransaction(context,customSamplingContext){return hub.getCurrentHub().startTransaction({...context},customSamplingContext)}function captureCheckIn(checkIn,upsertMonitorConfig){let scope=getCurrentScope(),client=getClient();if(!client)debugBuild.DEBUG_BUILD&&utils.logger.warn("Cannot capture check-in. No client defined.");else if(!client.captureCheckIn)debugBuild.DEBUG_BUILD&&utils.logger.warn("Cannot capture check-in. Client does not support sending check-ins.");else return client.captureCheckIn(checkIn,upsertMonitorConfig,scope);return utils.uuid4()}function withMonitor(monitorSlug,callback,upsertMonitorConfig){let checkInId=captureCheckIn({monitorSlug,status:"in_progress"},upsertMonitorConfig),now=utils.timestampInSeconds();function finishCheckIn(status){captureCheckIn({monitorSlug,status,checkInId,duration:utils.timestampInSeconds()-now})}let maybePromiseResult;try{maybePromiseResult=callback()}catch(e){throw finishCheckIn("error"),e}return utils.isThenable(maybePromiseResult)?Promise.resolve(maybePromiseResult).then(()=>{finishCheckIn("ok")},()=>{finishCheckIn("error")}):finishCheckIn("ok"),maybePromiseResult}async function flush(timeout){let client=getClient();return client?client.flush(timeout):(debugBuild.DEBUG_BUILD&&utils.logger.warn("Cannot flush events. No client defined."),Promise.resolve(!1))}async function close(timeout){let client=getClient();return client?client.close(timeout):(debugBuild.DEBUG_BUILD&&utils.logger.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))}function lastEventId(){return hub.getCurrentHub().lastEventId()}function getClient(){return hub.getCurrentHub().getClient()}function isInitialized(){return!!getClient()}function getCurrentScope(){return hub.getCurrentHub().getScope()}function startSession(context){let client=getClient(),isolationScope=hub.getIsolationScope(),currentScope=getCurrentScope(),{release,environment=constants.DEFAULT_ENVIRONMENT}=client&&client.getOptions()||{},{userAgent}=utils.GLOBAL_OBJ.navigator||{},session$1=session.makeSession({release,environment,user:currentScope.getUser()||isolationScope.getUser(),...userAgent&&{userAgent},...context}),currentSession=isolationScope.getSession();return currentSession&¤tSession.status==="ok"&&session.updateSession(currentSession,{status:"exited"}),endSession(),isolationScope.setSession(session$1),currentScope.setSession(session$1),session$1}function endSession(){let isolationScope=hub.getIsolationScope(),currentScope=getCurrentScope(),session$1=currentScope.getSession()||isolationScope.getSession();session$1&&session.closeSession(session$1),_sendSessionUpdate(),isolationScope.setSession(),currentScope.setSession()}function _sendSessionUpdate(){let isolationScope=hub.getIsolationScope(),currentScope=getCurrentScope(),client=getClient(),session2=currentScope.getSession()||isolationScope.getSession();session2&&client&&client.captureSession&&client.captureSession(session2)}function captureSession(end=!1){if(end){endSession();return}_sendSessionUpdate()}exports.addBreadcrumb=addBreadcrumb;exports.captureCheckIn=captureCheckIn;exports.captureEvent=captureEvent;exports.captureException=captureException;exports.captureMessage=captureMessage;exports.captureSession=captureSession;exports.close=close;exports.configureScope=configureScope;exports.endSession=endSession;exports.flush=flush;exports.getClient=getClient;exports.getCurrentScope=getCurrentScope;exports.isInitialized=isInitialized;exports.lastEventId=lastEventId;exports.setContext=setContext;exports.setExtra=setExtra;exports.setExtras=setExtras;exports.setTag=setTag;exports.setTags=setTags;exports.setUser=setUser;exports.startSession=startSession;exports.startTransaction=startTransaction;exports.withActiveSpan=withActiveSpan;exports.withIsolationScope=withIsolationScope;exports.withMonitor=withMonitor;exports.withScope=withScope}});var require_getRootSpan=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/getRootSpan.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function getRootSpan(span){return span.transaction}exports.getRootSpan=getRootSpan}});var require_dynamicSamplingContext=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/dynamicSamplingContext.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),constants=require_constants(),exports$1=require_exports(),getRootSpan=require_getRootSpan(),spanUtils=require_spanUtils();function getDynamicSamplingContextFromClient(trace_id,client,scope){let options=client.getOptions(),{publicKey:public_key}=client.getDsn()||{},{segment:user_segment}=scope&&scope.getUser()||{},dsc=utils.dropUndefinedKeys({environment:options.environment||constants.DEFAULT_ENVIRONMENT,release:options.release,user_segment,public_key,trace_id});return client.emit&&client.emit("createDsc",dsc),dsc}function getDynamicSamplingContextFromSpan(span){let client=exports$1.getClient();if(!client)return{};let dsc=getDynamicSamplingContextFromClient(spanUtils.spanToJSON(span).trace_id||"",client,exports$1.getCurrentScope()),txn=getRootSpan.getRootSpan(span);if(!txn)return dsc;let v7FrozenDsc=txn&&txn._frozenDynamicSamplingContext;if(v7FrozenDsc)return v7FrozenDsc;let{sampleRate:maybeSampleRate,source}=txn.metadata;maybeSampleRate!=null&&(dsc.sample_rate=`${maybeSampleRate}`);let jsonSpan=spanUtils.spanToJSON(txn);return source&&source!=="url"&&(dsc.transaction=jsonSpan.description),dsc.sampled=String(spanUtils.spanIsSampled(txn)),client.emit&&client.emit("createDsc",dsc),dsc}exports.getDynamicSamplingContextFromClient=getDynamicSamplingContextFromClient;exports.getDynamicSamplingContextFromSpan=getDynamicSamplingContextFromSpan}});var require_applyScopeDataToEvent=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/applyScopeDataToEvent.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),dynamicSamplingContext=require_dynamicSamplingContext(),getRootSpan=require_getRootSpan(),spanUtils=require_spanUtils();function applyScopeDataToEvent(event,data){let{fingerprint,span,breadcrumbs,sdkProcessingMetadata}=data;applyDataToEvent(event,data),span&&applySpanToEvent(event,span),applyFingerprintToEvent(event,fingerprint),applyBreadcrumbsToEvent(event,breadcrumbs),applySdkMetadataToEvent(event,sdkProcessingMetadata)}function mergeScopeData(data,mergeData){let{extra,tags,user,contexts,level,sdkProcessingMetadata,breadcrumbs,fingerprint,eventProcessors,attachments,propagationContext,transactionName,span}=mergeData;mergeAndOverwriteScopeData(data,"extra",extra),mergeAndOverwriteScopeData(data,"tags",tags),mergeAndOverwriteScopeData(data,"user",user),mergeAndOverwriteScopeData(data,"contexts",contexts),mergeAndOverwriteScopeData(data,"sdkProcessingMetadata",sdkProcessingMetadata),level&&(data.level=level),transactionName&&(data.transactionName=transactionName),span&&(data.span=span),breadcrumbs.length&&(data.breadcrumbs=[...data.breadcrumbs,...breadcrumbs]),fingerprint.length&&(data.fingerprint=[...data.fingerprint,...fingerprint]),eventProcessors.length&&(data.eventProcessors=[...data.eventProcessors,...eventProcessors]),attachments.length&&(data.attachments=[...data.attachments,...attachments]),data.propagationContext={...data.propagationContext,...propagationContext}}function mergeAndOverwriteScopeData(data,prop,mergeVal){if(mergeVal&&Object.keys(mergeVal).length){data[prop]={...data[prop]};for(let key in mergeVal)Object.prototype.hasOwnProperty.call(mergeVal,key)&&(data[prop][key]=mergeVal[key])}}function applyDataToEvent(event,data){let{extra,tags,user,contexts,level,transactionName}=data,cleanedExtra=utils.dropUndefinedKeys(extra);cleanedExtra&&Object.keys(cleanedExtra).length&&(event.extra={...cleanedExtra,...event.extra});let cleanedTags=utils.dropUndefinedKeys(tags);cleanedTags&&Object.keys(cleanedTags).length&&(event.tags={...cleanedTags,...event.tags});let cleanedUser=utils.dropUndefinedKeys(user);cleanedUser&&Object.keys(cleanedUser).length&&(event.user={...cleanedUser,...event.user});let cleanedContexts=utils.dropUndefinedKeys(contexts);cleanedContexts&&Object.keys(cleanedContexts).length&&(event.contexts={...cleanedContexts,...event.contexts}),level&&(event.level=level),transactionName&&(event.transaction=transactionName)}function applyBreadcrumbsToEvent(event,breadcrumbs){let mergedBreadcrumbs=[...event.breadcrumbs||[],...breadcrumbs];event.breadcrumbs=mergedBreadcrumbs.length?mergedBreadcrumbs:void 0}function applySdkMetadataToEvent(event,sdkProcessingMetadata){event.sdkProcessingMetadata={...event.sdkProcessingMetadata,...sdkProcessingMetadata}}function applySpanToEvent(event,span){event.contexts={trace:spanUtils.spanToTraceContext(span),...event.contexts};let rootSpan=getRootSpan.getRootSpan(span);if(rootSpan){event.sdkProcessingMetadata={dynamicSamplingContext:dynamicSamplingContext.getDynamicSamplingContextFromSpan(span),...event.sdkProcessingMetadata};let transactionName=spanUtils.spanToJSON(rootSpan).description;transactionName&&(event.tags={transaction:transactionName,...event.tags})}}function applyFingerprintToEvent(event,fingerprint){event.fingerprint=event.fingerprint?utils.arrayify(event.fingerprint):[],fingerprint&&(event.fingerprint=event.fingerprint.concat(fingerprint)),event.fingerprint&&!event.fingerprint.length&&delete event.fingerprint}exports.applyScopeDataToEvent=applyScopeDataToEvent;exports.mergeAndOverwriteScopeData=mergeAndOverwriteScopeData;exports.mergeScopeData=mergeScopeData}});var require_scope=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/scope.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),eventProcessors=require_eventProcessors(),session=require_session(),applyScopeDataToEvent=require_applyScopeDataToEvent(),DEFAULT_MAX_BREADCRUMBS=100,globalScope,Scope=class _Scope{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext=generatePropagationContext()}static clone(scope){return scope?scope.clone():new _Scope}clone(){let newScope=new _Scope;return newScope._breadcrumbs=[...this._breadcrumbs],newScope._tags={...this._tags},newScope._extra={...this._extra},newScope._contexts={...this._contexts},newScope._user=this._user,newScope._level=this._level,newScope._span=this._span,newScope._session=this._session,newScope._transactionName=this._transactionName,newScope._fingerprint=this._fingerprint,newScope._eventProcessors=[...this._eventProcessors],newScope._requestSession=this._requestSession,newScope._attachments=[...this._attachments],newScope._sdkProcessingMetadata={...this._sdkProcessingMetadata},newScope._propagationContext={...this._propagationContext},newScope._client=this._client,newScope}setClient(client){this._client=client}getClient(){return this._client}addScopeListener(callback){this._scopeListeners.push(callback)}addEventProcessor(callback){return this._eventProcessors.push(callback),this}setUser(user){return this._user=user||{email:void 0,id:void 0,ip_address:void 0,segment:void 0,username:void 0},this._session&&session.updateSession(this._session,{user}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(requestSession){return this._requestSession=requestSession,this}setTags(tags){return this._tags={...this._tags,...tags},this._notifyScopeListeners(),this}setTag(key,value){return this._tags={...this._tags,[key]:value},this._notifyScopeListeners(),this}setExtras(extras){return this._extra={...this._extra,...extras},this._notifyScopeListeners(),this}setExtra(key,extra){return this._extra={...this._extra,[key]:extra},this._notifyScopeListeners(),this}setFingerprint(fingerprint){return this._fingerprint=fingerprint,this._notifyScopeListeners(),this}setLevel(level){return this._level=level,this._notifyScopeListeners(),this}setTransactionName(name){return this._transactionName=name,this._notifyScopeListeners(),this}setContext(key,context){return context===null?delete this._contexts[key]:this._contexts[key]=context,this._notifyScopeListeners(),this}setSpan(span){return this._span=span,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){let span=this._span;return span&&span.transaction}setSession(session2){return session2?this._session=session2:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(captureContext){if(!captureContext)return this;let scopeToMerge=typeof captureContext=="function"?captureContext(this):captureContext;if(scopeToMerge instanceof _Scope){let scopeData=scopeToMerge.getScopeData();this._tags={...this._tags,...scopeData.tags},this._extra={...this._extra,...scopeData.extra},this._contexts={...this._contexts,...scopeData.contexts},scopeData.user&&Object.keys(scopeData.user).length&&(this._user=scopeData.user),scopeData.level&&(this._level=scopeData.level),scopeData.fingerprint.length&&(this._fingerprint=scopeData.fingerprint),scopeToMerge.getRequestSession()&&(this._requestSession=scopeToMerge.getRequestSession()),scopeData.propagationContext&&(this._propagationContext=scopeData.propagationContext)}else if(utils.isPlainObject(scopeToMerge)){let scopeContext=captureContext;this._tags={...this._tags,...scopeContext.tags},this._extra={...this._extra,...scopeContext.extra},this._contexts={...this._contexts,...scopeContext.contexts},scopeContext.user&&(this._user=scopeContext.user),scopeContext.level&&(this._level=scopeContext.level),scopeContext.fingerprint&&(this._fingerprint=scopeContext.fingerprint),scopeContext.requestSession&&(this._requestSession=scopeContext.requestSession),scopeContext.propagationContext&&(this._propagationContext=scopeContext.propagationContext)}return this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this._propagationContext=generatePropagationContext(),this}addBreadcrumb(breadcrumb,maxBreadcrumbs){let maxCrumbs=typeof maxBreadcrumbs=="number"?maxBreadcrumbs:DEFAULT_MAX_BREADCRUMBS;if(maxCrumbs<=0)return this;let mergedBreadcrumb={timestamp:utils.dateTimestampInSeconds(),...breadcrumb},breadcrumbs=this._breadcrumbs;return breadcrumbs.push(mergedBreadcrumb),this._breadcrumbs=breadcrumbs.length>maxCrumbs?breadcrumbs.slice(-maxCrumbs):breadcrumbs,this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(attachment){return this._attachments.push(attachment),this}getAttachments(){return this.getScopeData().attachments}clearAttachments(){return this._attachments=[],this}getScopeData(){let{_breadcrumbs,_attachments,_contexts,_tags,_extra,_user,_level,_fingerprint,_eventProcessors,_propagationContext,_sdkProcessingMetadata,_transactionName,_span}=this;return{breadcrumbs:_breadcrumbs,attachments:_attachments,contexts:_contexts,tags:_tags,extra:_extra,user:_user,level:_level,fingerprint:_fingerprint||[],eventProcessors:_eventProcessors,propagationContext:_propagationContext,sdkProcessingMetadata:_sdkProcessingMetadata,transactionName:_transactionName,span:_span}}applyToEvent(event,hint={},additionalEventProcessors=[]){applyScopeDataToEvent.applyScopeDataToEvent(event,this.getScopeData());let eventProcessors$1=[...additionalEventProcessors,...eventProcessors.getGlobalEventProcessors(),...this._eventProcessors];return eventProcessors.notifyEventProcessors(eventProcessors$1,event,hint)}setSDKProcessingMetadata(newData){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...newData},this}setPropagationContext(context){return this._propagationContext=context,this}getPropagationContext(){return this._propagationContext}captureException(exception,hint){let eventId=hint&&hint.event_id?hint.event_id:utils.uuid4();if(!this._client)return utils.logger.warn("No client configured on scope - will not capture exception!"),eventId;let syntheticException=new Error("Sentry syntheticException");return this._client.captureException(exception,{originalException:exception,syntheticException,...hint,event_id:eventId},this),eventId}captureMessage(message,level,hint){let eventId=hint&&hint.event_id?hint.event_id:utils.uuid4();if(!this._client)return utils.logger.warn("No client configured on scope - will not capture message!"),eventId;let syntheticException=new Error(message);return this._client.captureMessage(message,level,{originalException:message,syntheticException,...hint,event_id:eventId},this),eventId}captureEvent(event,hint){let eventId=hint&&hint.event_id?hint.event_id:utils.uuid4();return this._client?(this._client.captureEvent(event,{...hint,event_id:eventId},this),eventId):(utils.logger.warn("No client configured on scope - will not capture event!"),eventId)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach(callback=>{callback(this)}),this._notifyingListeners=!1)}};function getGlobalScope(){return globalScope||(globalScope=new Scope),globalScope}function setGlobalScope(scope){globalScope=scope}function generatePropagationContext(){return{traceId:utils.uuid4(),spanId:utils.uuid4().substring(16)}}exports.Scope=Scope;exports.getGlobalScope=getGlobalScope;exports.setGlobalScope=setGlobalScope}});var require_version=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/version.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var SDK_VERSION="7.120.1";exports.SDK_VERSION=SDK_VERSION}});var require_hub=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/hub.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),constants=require_constants(),debugBuild=require_debug_build2(),scope=require_scope(),session=require_session(),version=require_version(),API_VERSION=parseFloat(version.SDK_VERSION),DEFAULT_BREADCRUMBS=100,Hub=class{constructor(client,scope$1,isolationScope,_version=API_VERSION){this._version=_version;let assignedScope;scope$1?assignedScope=scope$1:(assignedScope=new scope.Scope,assignedScope.setClient(client));let assignedIsolationScope;isolationScope?assignedIsolationScope=isolationScope:(assignedIsolationScope=new scope.Scope,assignedIsolationScope.setClient(client)),this._stack=[{scope:assignedScope}],client&&this.bindClient(client),this._isolationScope=assignedIsolationScope}isOlderThan(version2){return this._version<version2}bindClient(client){let top=this.getStackTop();top.client=client,top.scope.setClient(client),client&&client.setupIntegrations&&client.setupIntegrations()}pushScope(){let scope2=this.getScope().clone();return this.getStack().push({client:this.getClient(),scope:scope2}),scope2}popScope(){return this.getStack().length<=1?!1:!!this.getStack().pop()}withScope(callback){let scope2=this.pushScope(),maybePromiseResult;try{maybePromiseResult=callback(scope2)}catch(e){throw this.popScope(),e}return utils.isThenable(maybePromiseResult)?maybePromiseResult.then(res=>(this.popScope(),res),e=>{throw this.popScope(),e}):(this.popScope(),maybePromiseResult)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(exception,hint){let eventId=this._lastEventId=hint&&hint.event_id?hint.event_id:utils.uuid4(),syntheticException=new Error("Sentry syntheticException");return this.getScope().captureException(exception,{originalException:exception,syntheticException,...hint,event_id:eventId}),eventId}captureMessage(message,level,hint){let eventId=this._lastEventId=hint&&hint.event_id?hint.event_id:utils.uuid4(),syntheticException=new Error(message);return this.getScope().captureMessage(message,level,{originalException:message,syntheticException,...hint,event_id:eventId}),eventId}captureEvent(event,hint){let eventId=hint&&hint.event_id?hint.event_id:utils.uuid4();return event.type||(this._lastEventId=eventId),this.getScope().captureEvent(event,{...hint,event_id:eventId}),eventId}lastEventId(){return this._lastEventId}addBreadcrumb(breadcrumb,hint){let{scope:scope2,client}=this.getStackTop();if(!client)return;let{beforeBreadcrumb=null,maxBreadcrumbs=DEFAULT_BREADCRUMBS}=client.getOptions&&client.getOptions()||{};if(maxBreadcrumbs<=0)return;let mergedBreadcrumb={timestamp:utils.dateTimestampInSeconds(),...breadcrumb},finalBreadcrumb=beforeBreadcrumb?utils.consoleSandbox(()=>beforeBreadcrumb(mergedBreadcrumb,hint)):mergedBreadcrumb;finalBreadcrumb!==null&&(client.emit&&client.emit("beforeAddBreadcrumb",finalBreadcrumb,hint),scope2.addBreadcrumb(finalBreadcrumb,maxBreadcrumbs))}setUser(user){this.getScope().setUser(user),this.getIsolationScope().setUser(user)}setTags(tags){this.getScope().setTags(tags),this.getIsolationScope().setTags(tags)}setExtras(extras){this.getScope().setExtras(extras),this.getIsolationScope().setExtras(extras)}setTag(key,value){this.getScope().setTag(key,value),this.getIsolationScope().setTag(key,value)}setExtra(key,extra){this.getScope().setExtra(key,extra),this.getIsolationScope().setExtra(key,extra)}setContext(name,context){this.getScope().setContext(name,context),this.getIsolationScope().setContext(name,context)}configureScope(callback){let{scope:scope2,client}=this.getStackTop();client&&callback(scope2)}run(callback){let oldHub=makeMain(this);try{callback(this)}finally{makeMain(oldHub)}}getIntegration(integration){let client=this.getClient();if(!client)return null;try{return client.getIntegration(integration)}catch{return debugBuild.DEBUG_BUILD&&utils.logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`),null}}startTransaction(context,customSamplingContext){let result=this._callExtensionMethod("startTransaction",context,customSamplingContext);return debugBuild.DEBUG_BUILD&&!result&&(this.getClient()?utils.logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':
|
|
14
|
+
Sentry.addTracingExtensions();
|
|
15
|
+
Sentry.init({...});
|
|
16
|
+
`):utils.logger.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")),result}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(endSession=!1){if(endSession)return this.endSession();this._sendSessionUpdate()}endSession(){let scope2=this.getStackTop().scope,session$1=scope2.getSession();session$1&&session.closeSession(session$1),this._sendSessionUpdate(),scope2.setSession()}startSession(context){let{scope:scope2,client}=this.getStackTop(),{release,environment=constants.DEFAULT_ENVIRONMENT}=client&&client.getOptions()||{},{userAgent}=utils.GLOBAL_OBJ.navigator||{},session$1=session.makeSession({release,environment,user:scope2.getUser(),...userAgent&&{userAgent},...context}),currentSession=scope2.getSession&&scope2.getSession();return currentSession&¤tSession.status==="ok"&&session.updateSession(currentSession,{status:"exited"}),this.endSession(),scope2.setSession(session$1),session$1}shouldSendDefaultPii(){let client=this.getClient(),options=client&&client.getOptions();return!!(options&&options.sendDefaultPii)}_sendSessionUpdate(){let{scope:scope2,client}=this.getStackTop(),session2=scope2.getSession();session2&&client&&client.captureSession&&client.captureSession(session2)}_callExtensionMethod(method,...args){let sentry=getMainCarrier().__SENTRY__;if(sentry&&sentry.extensions&&typeof sentry.extensions[method]=="function")return sentry.extensions[method].apply(this,args);debugBuild.DEBUG_BUILD&&utils.logger.warn(`Extension method ${method} couldn't be found, doing nothing.`)}};function getMainCarrier(){return utils.GLOBAL_OBJ.__SENTRY__=utils.GLOBAL_OBJ.__SENTRY__||{extensions:{},hub:void 0},utils.GLOBAL_OBJ}function makeMain(hub){let registry=getMainCarrier(),oldHub=getHubFromCarrier(registry);return setHubOnCarrier(registry,hub),oldHub}function getCurrentHub(){let registry=getMainCarrier();if(registry.__SENTRY__&®istry.__SENTRY__.acs){let hub=registry.__SENTRY__.acs.getCurrentHub();if(hub)return hub}return getGlobalHub(registry)}function getIsolationScope(){return getCurrentHub().getIsolationScope()}function getGlobalHub(registry=getMainCarrier()){return(!hasHubOnCarrier(registry)||getHubFromCarrier(registry).isOlderThan(API_VERSION))&&setHubOnCarrier(registry,new Hub),getHubFromCarrier(registry)}function ensureHubOnCarrier(carrier,parent=getGlobalHub()){if(!hasHubOnCarrier(carrier)||getHubFromCarrier(carrier).isOlderThan(API_VERSION)){let client=parent.getClient(),scope2=parent.getScope(),isolationScope=parent.getIsolationScope();setHubOnCarrier(carrier,new Hub(client,scope2.clone(),isolationScope.clone()))}}function setAsyncContextStrategy(strategy){let registry=getMainCarrier();registry.__SENTRY__=registry.__SENTRY__||{},registry.__SENTRY__.acs=strategy}function runWithAsyncContext(callback,options={}){let registry=getMainCarrier();return registry.__SENTRY__&®istry.__SENTRY__.acs?registry.__SENTRY__.acs.runWithAsyncContext(callback,options):callback()}function hasHubOnCarrier(carrier){return!!(carrier&&carrier.__SENTRY__&&carrier.__SENTRY__.hub)}function getHubFromCarrier(carrier){return utils.getGlobalSingleton("hub",()=>new Hub,carrier)}function setHubOnCarrier(carrier,hub){if(!carrier)return!1;let __SENTRY__=carrier.__SENTRY__=carrier.__SENTRY__||{};return __SENTRY__.hub=hub,!0}exports.API_VERSION=API_VERSION;exports.Hub=Hub;exports.ensureHubOnCarrier=ensureHubOnCarrier;exports.getCurrentHub=getCurrentHub;exports.getHubFromCarrier=getHubFromCarrier;exports.getIsolationScope=getIsolationScope;exports.getMainCarrier=getMainCarrier;exports.makeMain=makeMain;exports.runWithAsyncContext=runWithAsyncContext;exports.setAsyncContextStrategy=setAsyncContextStrategy;exports.setHubOnCarrier=setHubOnCarrier}});var require_utils=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/utils.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),hub=require_hub();function getActiveTransaction(maybeHub){return(maybeHub||hub.getCurrentHub()).getScope().getTransaction()}var extractTraceparentData=utils.extractTraceparentData;exports.stripUrlQueryAndFragment=utils.stripUrlQueryAndFragment;exports.extractTraceparentData=extractTraceparentData;exports.getActiveTransaction=getActiveTransaction}});var require_errors=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/errors.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),utils$1=require_utils(),errorsInstrumented=!1;function registerErrorInstrumentation(){errorsInstrumented||(errorsInstrumented=!0,utils.addGlobalErrorInstrumentationHandler(errorCallback),utils.addGlobalUnhandledRejectionInstrumentationHandler(errorCallback))}function errorCallback(){let activeTransaction=utils$1.getActiveTransaction();if(activeTransaction){let status="internal_error";debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Transaction: ${status} -> Global error occured`),activeTransaction.setStatus(status)}}errorCallback.tag="sentry_tracingErrorCallback";exports.registerErrorInstrumentation=registerErrorInstrumentation}});var require_spanstatus=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/spanstatus.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});exports.SpanStatus=void 0;(function(SpanStatus){let Ok="ok";SpanStatus.Ok=Ok;let DeadlineExceeded="deadline_exceeded";SpanStatus.DeadlineExceeded=DeadlineExceeded;let Unauthenticated="unauthenticated";SpanStatus.Unauthenticated=Unauthenticated;let PermissionDenied="permission_denied";SpanStatus.PermissionDenied=PermissionDenied;let NotFound="not_found";SpanStatus.NotFound=NotFound;let ResourceExhausted="resource_exhausted";SpanStatus.ResourceExhausted=ResourceExhausted;let InvalidArgument="invalid_argument";SpanStatus.InvalidArgument=InvalidArgument;let Unimplemented="unimplemented";SpanStatus.Unimplemented=Unimplemented;let Unavailable="unavailable";SpanStatus.Unavailable=Unavailable;let InternalError="internal_error";SpanStatus.InternalError=InternalError;let UnknownError="unknown_error";SpanStatus.UnknownError=UnknownError;let Cancelled="cancelled";SpanStatus.Cancelled=Cancelled;let AlreadyExists="already_exists";SpanStatus.AlreadyExists=AlreadyExists;let FailedPrecondition="failed_precondition";SpanStatus.FailedPrecondition=FailedPrecondition;let Aborted="aborted";SpanStatus.Aborted=Aborted;let OutOfRange="out_of_range";SpanStatus.OutOfRange=OutOfRange;let DataLoss="data_loss";SpanStatus.DataLoss=DataLoss})(exports.SpanStatus||(exports.SpanStatus={}));function getSpanStatusFromHttpCode(httpStatus){if(httpStatus<400&&httpStatus>=100)return"ok";if(httpStatus>=400&&httpStatus<500)switch(httpStatus){case 401:return"unauthenticated";case 403:return"permission_denied";case 404:return"not_found";case 409:return"already_exists";case 413:return"failed_precondition";case 429:return"resource_exhausted";default:return"invalid_argument"}if(httpStatus>=500&&httpStatus<600)switch(httpStatus){case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline_exceeded";default:return"internal_error"}return"unknown_error"}var spanStatusfromHttpCode=getSpanStatusFromHttpCode;function setHttpStatus(span,httpStatus){span.setTag("http.status_code",String(httpStatus)),span.setData("http.response.status_code",httpStatus);let spanStatus=getSpanStatusFromHttpCode(httpStatus);spanStatus!=="unknown_error"&&span.setStatus(spanStatus)}exports.getSpanStatusFromHttpCode=getSpanStatusFromHttpCode;exports.setHttpStatus=setHttpStatus;exports.spanStatusfromHttpCode=spanStatusfromHttpCode}});var require_handleCallbackErrors=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/handleCallbackErrors.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function handleCallbackErrors(fn,onError,onFinally=()=>{}){let maybePromiseResult;try{maybePromiseResult=fn()}catch(e){throw onError(e),onFinally(),e}return maybeHandlePromiseRejection(maybePromiseResult,onError,onFinally)}function maybeHandlePromiseRejection(value,onError,onFinally){return utils.isThenable(value)?value.then(res=>(onFinally(),res),e=>{throw onError(e),onFinally(),e}):(onFinally(),value)}exports.handleCallbackErrors=handleCallbackErrors}});var require_hasTracingEnabled=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/hasTracingEnabled.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var exports$1=require_exports();function hasTracingEnabled(maybeOptions){if(typeof __SENTRY_TRACING__=="boolean"&&!__SENTRY_TRACING__)return!1;let client=exports$1.getClient(),options=maybeOptions||client&&client.getOptions();return!!options&&(options.enableTracing||"tracesSampleRate"in options||"tracesSampler"in options)}exports.hasTracingEnabled=hasTracingEnabled}});var require_trace=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/trace.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),hub=require_hub(),spanUtils=require_spanUtils();require_errors();require_spanstatus();var dynamicSamplingContext=require_dynamicSamplingContext(),exports$1=require_exports(),handleCallbackErrors=require_handleCallbackErrors(),hasTracingEnabled=require_hasTracingEnabled();function trace(context,callback,onError=()=>{},afterFinish=()=>{}){let hub$1=hub.getCurrentHub(),scope=exports$1.getCurrentScope(),parentSpan=scope.getSpan(),spanContext=normalizeContext(context),activeSpan=createChildSpanOrTransaction(hub$1,{parentSpan,spanContext,forceTransaction:!1,scope});return scope.setSpan(activeSpan),handleCallbackErrors.handleCallbackErrors(()=>callback(activeSpan),error=>{activeSpan&&activeSpan.setStatus("internal_error"),onError(error,activeSpan)},()=>{activeSpan&&activeSpan.end(),scope.setSpan(parentSpan),afterFinish()})}function startSpan(context,callback){let spanContext=normalizeContext(context);return hub.runWithAsyncContext(()=>exports$1.withScope(context.scope,scope=>{let hub$1=hub.getCurrentHub(),parentSpan=scope.getSpan(),activeSpan=context.onlyIfParent&&!parentSpan?void 0:createChildSpanOrTransaction(hub$1,{parentSpan,spanContext,forceTransaction:context.forceTransaction,scope});return handleCallbackErrors.handleCallbackErrors(()=>callback(activeSpan),()=>{if(activeSpan){let{status}=spanUtils.spanToJSON(activeSpan);(!status||status==="ok")&&activeSpan.setStatus("internal_error")}},()=>activeSpan&&activeSpan.end())}))}var startActiveSpan=startSpan;function startSpanManual(context,callback){let spanContext=normalizeContext(context);return hub.runWithAsyncContext(()=>exports$1.withScope(context.scope,scope=>{let hub$1=hub.getCurrentHub(),parentSpan=scope.getSpan(),activeSpan=context.onlyIfParent&&!parentSpan?void 0:createChildSpanOrTransaction(hub$1,{parentSpan,spanContext,forceTransaction:context.forceTransaction,scope});function finishAndSetSpan(){activeSpan&&activeSpan.end()}return handleCallbackErrors.handleCallbackErrors(()=>callback(activeSpan,finishAndSetSpan),()=>{if(activeSpan&&activeSpan.isRecording()){let{status}=spanUtils.spanToJSON(activeSpan);(!status||status==="ok")&&activeSpan.setStatus("internal_error")}})}))}function startInactiveSpan(context){if(!hasTracingEnabled.hasTracingEnabled())return;let spanContext=normalizeContext(context),hub$1=hub.getCurrentHub(),parentSpan=context.scope?context.scope.getSpan():getActiveSpan();if(context.onlyIfParent&&!parentSpan)return;let temporaryScope=(context.scope||exports$1.getCurrentScope()).clone();return createChildSpanOrTransaction(hub$1,{parentSpan,spanContext,forceTransaction:context.forceTransaction,scope:temporaryScope})}function getActiveSpan(){return exports$1.getCurrentScope().getSpan()}var continueTrace=({sentryTrace,baggage},callback)=>{let currentScope=exports$1.getCurrentScope(),{traceparentData,dynamicSamplingContext:dynamicSamplingContext2,propagationContext}=utils.tracingContextFromHeaders(sentryTrace,baggage);currentScope.setPropagationContext(propagationContext),debugBuild.DEBUG_BUILD&&traceparentData&&utils.logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);let transactionContext={...traceparentData,metadata:utils.dropUndefinedKeys({dynamicSamplingContext:dynamicSamplingContext2})};return callback?hub.runWithAsyncContext(()=>callback(transactionContext)):transactionContext};function createChildSpanOrTransaction(hub$1,{parentSpan,spanContext,forceTransaction,scope}){if(!hasTracingEnabled.hasTracingEnabled())return;let isolationScope=hub.getIsolationScope(),span;if(parentSpan&&!forceTransaction)span=parentSpan.startChild(spanContext);else if(parentSpan){let dsc=dynamicSamplingContext.getDynamicSamplingContextFromSpan(parentSpan),{traceId,spanId:parentSpanId}=parentSpan.spanContext(),sampled=spanUtils.spanIsSampled(parentSpan);span=hub$1.startTransaction({traceId,parentSpanId,parentSampled:sampled,...spanContext,metadata:{dynamicSamplingContext:dsc,...spanContext.metadata}})}else{let{traceId,dsc,parentSpanId,sampled}={...isolationScope.getPropagationContext(),...scope.getPropagationContext()};span=hub$1.startTransaction({traceId,parentSpanId,parentSampled:sampled,...spanContext,metadata:{dynamicSamplingContext:dsc,...spanContext.metadata}})}return scope.setSpan(span),setCapturedScopesOnSpan(span,scope,isolationScope),span}function normalizeContext(context){if(context.startTime){let ctx={...context};return ctx.startTimestamp=spanUtils.spanTimeInputToSeconds(context.startTime),delete ctx.startTime,ctx}return context}var SCOPE_ON_START_SPAN_FIELD="_sentryScope",ISOLATION_SCOPE_ON_START_SPAN_FIELD="_sentryIsolationScope";function setCapturedScopesOnSpan(span,scope,isolationScope){span&&(utils.addNonEnumerableProperty(span,ISOLATION_SCOPE_ON_START_SPAN_FIELD,isolationScope),utils.addNonEnumerableProperty(span,SCOPE_ON_START_SPAN_FIELD,scope))}function getCapturedScopesOnSpan(span){return{scope:span[SCOPE_ON_START_SPAN_FIELD],isolationScope:span[ISOLATION_SCOPE_ON_START_SPAN_FIELD]}}exports.continueTrace=continueTrace;exports.getActiveSpan=getActiveSpan;exports.getCapturedScopesOnSpan=getCapturedScopesOnSpan;exports.startActiveSpan=startActiveSpan;exports.startInactiveSpan=startInactiveSpan;exports.startSpan=startSpan;exports.startSpanManual=startSpanManual;exports.trace=trace}});var require_metric_summary=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/metric-summary.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();require_debug_build2();require_errors();require_spanstatus();var trace=require_trace(),SPAN_METRIC_SUMMARY;function getMetricStorageForSpan(span){return SPAN_METRIC_SUMMARY?SPAN_METRIC_SUMMARY.get(span):void 0}function getMetricSummaryJsonForSpan(span){let storage=getMetricStorageForSpan(span);if(!storage)return;let output={};for(let[,[exportKey,summary]]of storage)output[exportKey]||(output[exportKey]=[]),output[exportKey].push(utils.dropUndefinedKeys(summary));return output}function updateMetricSummaryOnActiveSpan(metricType,sanitizedName,value,unit,tags,bucketKey){let span=trace.getActiveSpan();if(span){let storage=getMetricStorageForSpan(span)||new Map,exportKey=`${metricType}:${sanitizedName}@${unit}`,bucketItem=storage.get(bucketKey);if(bucketItem){let[,summary]=bucketItem;storage.set(bucketKey,[exportKey,{min:Math.min(summary.min,value),max:Math.max(summary.max,value),count:summary.count+=1,sum:summary.sum+=value,tags:summary.tags}])}else storage.set(bucketKey,[exportKey,{min:value,max:value,count:1,sum:value,tags}]);SPAN_METRIC_SUMMARY||(SPAN_METRIC_SUMMARY=new WeakMap),SPAN_METRIC_SUMMARY.set(span,storage)}}exports.getMetricSummaryJsonForSpan=getMetricSummaryJsonForSpan;exports.updateMetricSummaryOnActiveSpan=updateMetricSummaryOnActiveSpan}});var require_semanticAttributes=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/semanticAttributes.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var SEMANTIC_ATTRIBUTE_SENTRY_SOURCE="sentry.source",SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE="sentry.sample_rate",SEMANTIC_ATTRIBUTE_SENTRY_OP="sentry.op",SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN="sentry.origin",SEMANTIC_ATTRIBUTE_PROFILE_ID="profile_id";exports.SEMANTIC_ATTRIBUTE_PROFILE_ID=SEMANTIC_ATTRIBUTE_PROFILE_ID;exports.SEMANTIC_ATTRIBUTE_SENTRY_OP=SEMANTIC_ATTRIBUTE_SENTRY_OP;exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=SEMANTIC_ATTRIBUTE_SENTRY_SOURCE}});var require_span=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/span.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),metricSummary=require_metric_summary(),semanticAttributes=require_semanticAttributes(),getRootSpan=require_getRootSpan(),spanUtils=require_spanUtils(),spanstatus=require_spanstatus(),SpanRecorder=class{constructor(maxlen=1e3){this._maxlen=maxlen,this.spans=[]}add(span){this.spans.length>this._maxlen?span.spanRecorder=void 0:this.spans.push(span)}},Span=class _Span{constructor(spanContext={}){this._traceId=spanContext.traceId||utils.uuid4(),this._spanId=spanContext.spanId||utils.uuid4().substring(16),this._startTime=spanContext.startTimestamp||utils.timestampInSeconds(),this.tags=spanContext.tags?{...spanContext.tags}:{},this.data=spanContext.data?{...spanContext.data}:{},this.instrumenter=spanContext.instrumenter||"sentry",this._attributes={},this.setAttributes({[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:spanContext.origin||"manual",[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]:spanContext.op,...spanContext.attributes}),this._name=spanContext.name||spanContext.description,spanContext.parentSpanId&&(this._parentSpanId=spanContext.parentSpanId),"sampled"in spanContext&&(this._sampled=spanContext.sampled),spanContext.status&&(this._status=spanContext.status),spanContext.endTimestamp&&(this._endTime=spanContext.endTimestamp),spanContext.exclusiveTime!==void 0&&(this._exclusiveTime=spanContext.exclusiveTime),this._measurements=spanContext.measurements?{...spanContext.measurements}:{}}get name(){return this._name||""}set name(name){this.updateName(name)}get description(){return this._name}set description(description){this._name=description}get traceId(){return this._traceId}set traceId(traceId){this._traceId=traceId}get spanId(){return this._spanId}set spanId(spanId){this._spanId=spanId}set parentSpanId(string){this._parentSpanId=string}get parentSpanId(){return this._parentSpanId}get sampled(){return this._sampled}set sampled(sampled){this._sampled=sampled}get attributes(){return this._attributes}set attributes(attributes){this._attributes=attributes}get startTimestamp(){return this._startTime}set startTimestamp(startTime){this._startTime=startTime}get endTimestamp(){return this._endTime}set endTimestamp(endTime){this._endTime=endTime}get status(){return this._status}set status(status){this._status=status}get op(){return this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP]}set op(op){this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP,op)}get origin(){return this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]}set origin(origin){this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,origin)}spanContext(){let{_spanId:spanId,_traceId:traceId,_sampled:sampled}=this;return{spanId,traceId,traceFlags:sampled?spanUtils.TRACE_FLAG_SAMPLED:spanUtils.TRACE_FLAG_NONE}}startChild(spanContext){let childSpan=new _Span({...spanContext,parentSpanId:this._spanId,sampled:this._sampled,traceId:this._traceId});childSpan.spanRecorder=this.spanRecorder,childSpan.spanRecorder&&childSpan.spanRecorder.add(childSpan);let rootSpan=getRootSpan.getRootSpan(this);if(childSpan.transaction=rootSpan,debugBuild.DEBUG_BUILD&&rootSpan){let opStr=spanContext&&spanContext.op||"< unknown op >",nameStr=spanUtils.spanToJSON(childSpan).description||"< unknown name >",idStr=rootSpan.spanContext().spanId,logMessage=`[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;utils.logger.log(logMessage),this._logMessage=logMessage}return childSpan}setTag(key,value){return this.tags={...this.tags,[key]:value},this}setData(key,value){return this.data={...this.data,[key]:value},this}setAttribute(key,value){value===void 0?delete this._attributes[key]:this._attributes[key]=value}setAttributes(attributes){Object.keys(attributes).forEach(key=>this.setAttribute(key,attributes[key]))}setStatus(value){return this._status=value,this}setHttpStatus(httpStatus){return spanstatus.setHttpStatus(this,httpStatus),this}setName(name){this.updateName(name)}updateName(name){return this._name=name,this}isSuccess(){return this._status==="ok"}finish(endTimestamp){return this.end(endTimestamp)}end(endTimestamp){if(this._endTime)return;let rootSpan=getRootSpan.getRootSpan(this);if(debugBuild.DEBUG_BUILD&&rootSpan&&rootSpan.spanContext().spanId!==this._spanId){let logMessage=this._logMessage;logMessage&&utils.logger.log(logMessage.replace("Starting","Finishing"))}this._endTime=spanUtils.spanTimeInputToSeconds(endTimestamp)}toTraceparent(){return spanUtils.spanToTraceHeader(this)}toContext(){return utils.dropUndefinedKeys({data:this._getData(),description:this._name,endTimestamp:this._endTime,op:this.op,parentSpanId:this._parentSpanId,sampled:this._sampled,spanId:this._spanId,startTimestamp:this._startTime,status:this._status,tags:this.tags,traceId:this._traceId})}updateWithContext(spanContext){return this.data=spanContext.data||{},this._name=spanContext.name||spanContext.description,this._endTime=spanContext.endTimestamp,this.op=spanContext.op,this._parentSpanId=spanContext.parentSpanId,this._sampled=spanContext.sampled,this._spanId=spanContext.spanId||this._spanId,this._startTime=spanContext.startTimestamp||this._startTime,this._status=spanContext.status,this.tags=spanContext.tags||{},this._traceId=spanContext.traceId||this._traceId,this}getTraceContext(){return spanUtils.spanToTraceContext(this)}getSpanJSON(){return utils.dropUndefinedKeys({data:this._getData(),description:this._name,op:this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:this._status,tags:Object.keys(this.tags).length>0?this.tags:void 0,timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],_metrics_summary:metricSummary.getMetricSummaryJsonForSpan(this),profile_id:this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID],exclusive_time:this._exclusiveTime,measurements:Object.keys(this._measurements).length>0?this._measurements:void 0})}isRecording(){return!this._endTime&&!!this._sampled}toJSON(){return this.getSpanJSON()}_getData(){let{data,_attributes:attributes}=this,hasData=Object.keys(data).length>0,hasAttributes=Object.keys(attributes).length>0;if(!(!hasData&&!hasAttributes))return hasData&&hasAttributes?{...data,...attributes}:hasData?data:attributes}};exports.Span=Span;exports.SpanRecorder=SpanRecorder}});var require_transaction=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/transaction.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),hub=require_hub(),metricSummary=require_metric_summary(),semanticAttributes=require_semanticAttributes(),spanUtils=require_spanUtils(),dynamicSamplingContext=require_dynamicSamplingContext(),span=require_span(),trace=require_trace(),Transaction=class extends span.Span{constructor(transactionContext,hub$1){super(transactionContext),this._contexts={},this._hub=hub$1||hub.getCurrentHub(),this._name=transactionContext.name||"",this._metadata={...transactionContext.metadata},this._trimEnd=transactionContext.trimEnd,this.transaction=this;let incomingDynamicSamplingContext=this._metadata.dynamicSamplingContext;incomingDynamicSamplingContext&&(this._frozenDynamicSamplingContext={...incomingDynamicSamplingContext})}get name(){return this._name}set name(newName){this.setName(newName)}get metadata(){return{source:"custom",spanMetadata:{},...this._metadata,...this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]&&{source:this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]},...this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]&&{sampleRate:this._attributes[semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]}}}set metadata(metadata){this._metadata=metadata}setName(name,source="custom"){this._name=name,this.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,source)}updateName(name){return this._name=name,this}initSpanRecorder(maxlen=1e3){this.spanRecorder||(this.spanRecorder=new span.SpanRecorder(maxlen)),this.spanRecorder.add(this)}setContext(key,context){context===null?delete this._contexts[key]:this._contexts[key]=context}setMeasurement(name,value,unit=""){this._measurements[name]={value,unit}}setMetadata(newMetadata){this._metadata={...this._metadata,...newMetadata}}end(endTimestamp){let timestampInS=spanUtils.spanTimeInputToSeconds(endTimestamp),transaction=this._finishTransaction(timestampInS);if(transaction)return this._hub.captureEvent(transaction)}toContext(){let spanContext=super.toContext();return utils.dropUndefinedKeys({...spanContext,name:this._name,trimEnd:this._trimEnd})}updateWithContext(transactionContext){return super.updateWithContext(transactionContext),this._name=transactionContext.name||"",this._trimEnd=transactionContext.trimEnd,this}getDynamicSamplingContext(){return dynamicSamplingContext.getDynamicSamplingContextFromSpan(this)}setHub(hub2){this._hub=hub2}getProfileId(){if(this._contexts!==void 0&&this._contexts.profile!==void 0)return this._contexts.profile.profile_id}_finishTransaction(endTimestamp){if(this._endTime!==void 0)return;this._name||(debugBuild.DEBUG_BUILD&&utils.logger.warn("Transaction has no name, falling back to `<unlabeled transaction>`."),this._name="<unlabeled transaction>"),super.end(endTimestamp);let client=this._hub.getClient();if(client&&client.emit&&client.emit("finishTransaction",this),this._sampled!==!0){debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled."),client&&client.recordDroppedEvent("sample_rate","transaction");return}let finishedSpans=this.spanRecorder?this.spanRecorder.spans.filter(span2=>span2!==this&&spanUtils.spanToJSON(span2).timestamp):[];if(this._trimEnd&&finishedSpans.length>0){let endTimes=finishedSpans.map(span2=>spanUtils.spanToJSON(span2).timestamp).filter(Boolean);this._endTime=endTimes.reduce((prev,current)=>prev>current?prev:current)}let{scope:capturedSpanScope,isolationScope:capturedSpanIsolationScope}=trace.getCapturedScopesOnSpan(this),{metadata}=this,{source}=metadata,transaction={contexts:{...this._contexts,trace:spanUtils.spanToTraceContext(this)},spans:finishedSpans,start_timestamp:this._startTime,tags:this.tags,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{...metadata,capturedSpanScope,capturedSpanIsolationScope,...utils.dropUndefinedKeys({dynamicSamplingContext:dynamicSamplingContext.getDynamicSamplingContextFromSpan(this)})},_metrics_summary:metricSummary.getMetricSummaryJsonForSpan(this),...source&&{transaction_info:{source}}};return Object.keys(this._measurements).length>0&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,void 0,2)),transaction.measurements=this._measurements),debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`),transaction}};exports.Transaction=Transaction}});var require_idletransaction=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/idletransaction.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),spanUtils=require_spanUtils(),span=require_span(),transaction=require_transaction(),TRACING_DEFAULTS={idleTimeout:1e3,finalTimeout:3e4,heartbeatInterval:5e3},FINISH_REASON_TAG="finishReason",IDLE_TRANSACTION_FINISH_REASONS=["heartbeatFailed","idleTimeout","documentHidden","finalTimeout","externalFinish","cancelled"],IdleTransactionSpanRecorder=class extends span.SpanRecorder{constructor(_pushActivity,_popActivity,transactionSpanId,maxlen){super(maxlen),this._pushActivity=_pushActivity,this._popActivity=_popActivity,this.transactionSpanId=transactionSpanId}add(span2){if(span2.spanContext().spanId!==this.transactionSpanId){let originalEnd=span2.end;span2.end=(...rest)=>(this._popActivity(span2.spanContext().spanId),originalEnd.apply(span2,rest)),spanUtils.spanToJSON(span2).timestamp===void 0&&this._pushActivity(span2.spanContext().spanId)}super.add(span2)}},IdleTransaction=class extends transaction.Transaction{constructor(transactionContext,_idleHub,_idleTimeout=TRACING_DEFAULTS.idleTimeout,_finalTimeout=TRACING_DEFAULTS.finalTimeout,_heartbeatInterval=TRACING_DEFAULTS.heartbeatInterval,_onScope=!1,delayAutoFinishUntilSignal=!1){super(transactionContext,_idleHub),this._idleHub=_idleHub,this._idleTimeout=_idleTimeout,this._finalTimeout=_finalTimeout,this._heartbeatInterval=_heartbeatInterval,this._onScope=_onScope,this.activities={},this._heartbeatCounter=0,this._finished=!1,this._idleTimeoutCanceledPermanently=!1,this._beforeFinishCallbacks=[],this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[4],this._autoFinishAllowed=!delayAutoFinishUntilSignal,_onScope&&(debugBuild.DEBUG_BUILD&&utils.logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`),_idleHub.getScope().setSpan(this)),delayAutoFinishUntilSignal||this._restartIdleTimeout(),setTimeout(()=>{this._finished||(this.setStatus("deadline_exceeded"),this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[3],this.end())},this._finalTimeout)}end(endTimestamp){let endTimestampInS=spanUtils.spanTimeInputToSeconds(endTimestamp);if(this._finished=!0,this.activities={},this.op==="ui.action.click"&&this.setAttribute(FINISH_REASON_TAG,this._finishReason),this.spanRecorder){debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] finishing IdleTransaction",new Date(endTimestampInS*1e3).toISOString(),this.op);for(let callback of this._beforeFinishCallbacks)callback(this,endTimestampInS);this.spanRecorder.spans=this.spanRecorder.spans.filter(span2=>{if(span2.spanContext().spanId===this.spanContext().spanId)return!0;spanUtils.spanToJSON(span2).timestamp||(span2.setStatus("cancelled"),span2.end(endTimestampInS),debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(span2,void 0,2)));let{start_timestamp:startTime,timestamp:endTime}=spanUtils.spanToJSON(span2),spanStartedBeforeTransactionFinish=startTime&&startTime<endTimestampInS,timeoutWithMarginOfError=(this._finalTimeout+this._idleTimeout)/1e3,spanEndedBeforeFinalTimeout=endTime&&startTime&&endTime-startTime<timeoutWithMarginOfError;if(debugBuild.DEBUG_BUILD){let stringifiedSpan=JSON.stringify(span2,void 0,2);spanStartedBeforeTransactionFinish?spanEndedBeforeFinalTimeout||utils.logger.log("[Tracing] discarding Span since it finished after Transaction final timeout",stringifiedSpan):utils.logger.log("[Tracing] discarding Span since it happened after Transaction was finished",stringifiedSpan)}return spanStartedBeforeTransactionFinish&&spanEndedBeforeFinalTimeout}),debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] flushing IdleTransaction")}else debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] No active IdleTransaction");if(this._onScope){let scope=this._idleHub.getScope();scope.getTransaction()===this&&scope.setSpan(void 0)}return super.end(endTimestamp)}registerBeforeFinishCallback(callback){this._beforeFinishCallbacks.push(callback)}initSpanRecorder(maxlen){if(!this.spanRecorder){let pushActivity=id=>{this._finished||this._pushActivity(id)},popActivity=id=>{this._finished||this._popActivity(id)};this.spanRecorder=new IdleTransactionSpanRecorder(pushActivity,popActivity,this.spanContext().spanId,maxlen),debugBuild.DEBUG_BUILD&&utils.logger.log("Starting heartbeat"),this._pingHeartbeat()}this.spanRecorder.add(this)}cancelIdleTimeout(endTimestamp,{restartOnChildSpanChange}={restartOnChildSpanChange:!0}){this._idleTimeoutCanceledPermanently=restartOnChildSpanChange===!1,this._idleTimeoutID&&(clearTimeout(this._idleTimeoutID),this._idleTimeoutID=void 0,Object.keys(this.activities).length===0&&this._idleTimeoutCanceledPermanently&&(this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[5],this.end(endTimestamp)))}setFinishReason(reason){this._finishReason=reason}sendAutoFinishSignal(){this._autoFinishAllowed||(debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] Received finish signal for idle transaction."),this._restartIdleTimeout(),this._autoFinishAllowed=!0)}_restartIdleTimeout(endTimestamp){this.cancelIdleTimeout(),this._idleTimeoutID=setTimeout(()=>{!this._finished&&Object.keys(this.activities).length===0&&(this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[1],this.end(endTimestamp))},this._idleTimeout)}_pushActivity(spanId){this.cancelIdleTimeout(void 0,{restartOnChildSpanChange:!this._idleTimeoutCanceledPermanently}),debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] pushActivity: ${spanId}`),this.activities[spanId]=!0,debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)}_popActivity(spanId){if(this.activities[spanId]&&(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] popActivity ${spanId}`),delete this.activities[spanId],debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] new activities count",Object.keys(this.activities).length)),Object.keys(this.activities).length===0){let endTimestamp=utils.timestampInSeconds();this._idleTimeoutCanceledPermanently?this._autoFinishAllowed&&(this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[5],this.end(endTimestamp)):this._restartIdleTimeout(endTimestamp+this._idleTimeout/1e3)}}_beat(){if(this._finished)return;let heartbeatString=Object.keys(this.activities).join("");heartbeatString===this._prevHeartbeatString?this._heartbeatCounter++:this._heartbeatCounter=1,this._prevHeartbeatString=heartbeatString,this._heartbeatCounter>=3?this._autoFinishAllowed&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] Transaction finished because of no change for 3 heart beats"),this.setStatus("deadline_exceeded"),this._finishReason=IDLE_TRANSACTION_FINISH_REASONS[0],this.end()):this._pingHeartbeat()}_pingHeartbeat(){debugBuild.DEBUG_BUILD&&utils.logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`),setTimeout(()=>{this._beat()},this._heartbeatInterval)}};exports.IdleTransaction=IdleTransaction;exports.IdleTransactionSpanRecorder=IdleTransactionSpanRecorder;exports.TRACING_DEFAULTS=TRACING_DEFAULTS}});var require_sampling=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/sampling.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),semanticAttributes=require_semanticAttributes(),hasTracingEnabled=require_hasTracingEnabled(),spanUtils=require_spanUtils();function sampleTransaction(transaction,options,samplingContext){if(!hasTracingEnabled.hasTracingEnabled(options))return transaction.sampled=!1,transaction;if(transaction.sampled!==void 0)return transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(transaction.sampled)),transaction;let sampleRate;return typeof options.tracesSampler=="function"?(sampleRate=options.tracesSampler(samplingContext),transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(sampleRate))):samplingContext.parentSampled!==void 0?sampleRate=samplingContext.parentSampled:typeof options.tracesSampleRate<"u"?(sampleRate=options.tracesSampleRate,transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,Number(sampleRate))):(sampleRate=1,transaction.setAttribute(semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE,sampleRate)),isValidSampleRate(sampleRate)?sampleRate?(transaction.sampled=Math.random()<sampleRate,transaction.sampled?(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanUtils.spanToJSON(transaction).description}`),transaction):(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(sampleRate)})`),transaction)):(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Discarding transaction because ${typeof options.tracesSampler=="function"?"tracesSampler returned 0 or false":"a negative sampling decision was inherited or tracesSampleRate is set to 0"}`),transaction.sampled=!1,transaction):(debugBuild.DEBUG_BUILD&&utils.logger.warn("[Tracing] Discarding transaction because of invalid sample rate."),transaction.sampled=!1,transaction)}function isValidSampleRate(rate){return utils.isNaN(rate)||!(typeof rate=="number"||typeof rate=="boolean")?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(rate)} of type ${JSON.stringify(typeof rate)}.`),!1):rate<0||rate>1?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`),!1):!0}exports.isValidSampleRate=isValidSampleRate;exports.sampleTransaction=sampleTransaction}});var require_hubextensions=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/hubextensions.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),hub=require_hub(),spanUtils=require_spanUtils(),errors=require_errors(),idletransaction=require_idletransaction(),sampling=require_sampling(),transaction=require_transaction();function traceHeaders(){let span=this.getScope().getSpan();return span?{"sentry-trace":spanUtils.spanToTraceHeader(span)}:{}}function _startTransaction(transactionContext,customSamplingContext){let client=this.getClient(),options=client&&client.getOptions()||{},configInstrumenter=options.instrumenter||"sentry",transactionInstrumenter=transactionContext.instrumenter||"sentry";configInstrumenter!==transactionInstrumenter&&(debugBuild.DEBUG_BUILD&&utils.logger.error(`A transaction was started with instrumenter=\`${transactionInstrumenter}\`, but the SDK is configured with the \`${configInstrumenter}\` instrumenter.
|
|
17
|
+
The transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`),transactionContext.sampled=!1);let transaction$1=new transaction.Transaction(transactionContext,this);return transaction$1=sampling.sampleTransaction(transaction$1,options,{name:transactionContext.name,parentSampled:transactionContext.parentSampled,transactionContext,attributes:{...transactionContext.data,...transactionContext.attributes},...customSamplingContext}),transaction$1.isRecording()&&transaction$1.initSpanRecorder(options._experiments&&options._experiments.maxSpans),client&&client.emit&&client.emit("startTransaction",transaction$1),transaction$1}function startIdleTransaction(hub2,transactionContext,idleTimeout,finalTimeout,onScope,customSamplingContext,heartbeatInterval,delayAutoFinishUntilSignal=!1){let client=hub2.getClient(),options=client&&client.getOptions()||{},transaction2=new idletransaction.IdleTransaction(transactionContext,hub2,idleTimeout,finalTimeout,heartbeatInterval,onScope,delayAutoFinishUntilSignal);return transaction2=sampling.sampleTransaction(transaction2,options,{name:transactionContext.name,parentSampled:transactionContext.parentSampled,transactionContext,attributes:{...transactionContext.data,...transactionContext.attributes},...customSamplingContext}),transaction2.isRecording()&&transaction2.initSpanRecorder(options._experiments&&options._experiments.maxSpans),client&&client.emit&&client.emit("startTransaction",transaction2),transaction2}function addTracingExtensions(){let carrier=hub.getMainCarrier();carrier.__SENTRY__&&(carrier.__SENTRY__.extensions=carrier.__SENTRY__.extensions||{},carrier.__SENTRY__.extensions.startTransaction||(carrier.__SENTRY__.extensions.startTransaction=_startTransaction),carrier.__SENTRY__.extensions.traceHeaders||(carrier.__SENTRY__.extensions.traceHeaders=traceHeaders),errors.registerErrorInstrumentation())}exports.addTracingExtensions=addTracingExtensions;exports.startIdleTransaction=startIdleTransaction}});var require_measurement=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/tracing/measurement.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_utils();function setMeasurement(name,value,unit){let transaction=utils.getActiveTransaction();transaction&&transaction.setMeasurement(name,value,unit)}exports.setMeasurement=setMeasurement}});var require_envelope2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/envelope.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function enhanceEventWithSdkInfo(event,sdkInfo){return sdkInfo&&(event.sdk=event.sdk||{},event.sdk.name=event.sdk.name||sdkInfo.name,event.sdk.version=event.sdk.version||sdkInfo.version,event.sdk.integrations=[...event.sdk.integrations||[],...sdkInfo.integrations||[]],event.sdk.packages=[...event.sdk.packages||[],...sdkInfo.packages||[]]),event}function createSessionEnvelope(session,dsn,metadata,tunnel){let sdkInfo=utils.getSdkMetadataForEnvelopeHeader(metadata),envelopeHeaders={sent_at:new Date().toISOString(),...sdkInfo&&{sdk:sdkInfo},...!!tunnel&&dsn&&{dsn:utils.dsnToString(dsn)}},envelopeItem="aggregates"in session?[{type:"sessions"},session]:[{type:"session"},session.toJSON()];return utils.createEnvelope(envelopeHeaders,[envelopeItem])}function createEventEnvelope(event,dsn,metadata,tunnel){let sdkInfo=utils.getSdkMetadataForEnvelopeHeader(metadata),eventType=event.type&&event.type!=="replay_event"?event.type:"event";enhanceEventWithSdkInfo(event,metadata&&metadata.sdk);let envelopeHeaders=utils.createEventEnvelopeHeaders(event,sdkInfo,tunnel,dsn);delete event.sdkProcessingMetadata;let eventItem=[{type:eventType},event];return utils.createEnvelope(envelopeHeaders,[eventItem])}exports.createEventEnvelope=createEventEnvelope;exports.createSessionEnvelope=createSessionEnvelope}});var require_sessionflusher=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sessionflusher.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),exports$1=require_exports(),SessionFlusher=class{constructor(client,attrs){this._client=client,this.flushTimeout=60,this._pendingAggregates={},this._isEnabled=!0,this._intervalId=setInterval(()=>this.flush(),this.flushTimeout*1e3),this._intervalId.unref&&this._intervalId.unref(),this._sessionAttrs=attrs}flush(){let sessionAggregates=this.getSessionAggregates();sessionAggregates.aggregates.length!==0&&(this._pendingAggregates={},this._client.sendSession(sessionAggregates))}getSessionAggregates(){let aggregates=Object.keys(this._pendingAggregates).map(key=>this._pendingAggregates[parseInt(key)]),sessionAggregates={attrs:this._sessionAttrs,aggregates};return utils.dropUndefinedKeys(sessionAggregates)}close(){clearInterval(this._intervalId),this._isEnabled=!1,this.flush()}incrementSessionStatusCount(){if(!this._isEnabled)return;let scope=exports$1.getCurrentScope(),requestSession=scope.getRequestSession();requestSession&&requestSession.status&&(this._incrementSessionStatusCount(requestSession.status,new Date),scope.setRequestSession(void 0))}_incrementSessionStatusCount(status,date){let sessionStartedTrunc=new Date(date).setSeconds(0,0);this._pendingAggregates[sessionStartedTrunc]=this._pendingAggregates[sessionStartedTrunc]||{};let aggregationCounts=this._pendingAggregates[sessionStartedTrunc];switch(aggregationCounts.started||(aggregationCounts.started=new Date(sessionStartedTrunc).toISOString()),status){case"errored":return aggregationCounts.errored=(aggregationCounts.errored||0)+1,aggregationCounts.errored;case"ok":return aggregationCounts.exited=(aggregationCounts.exited||0)+1,aggregationCounts.exited;default:return aggregationCounts.crashed=(aggregationCounts.crashed||0)+1,aggregationCounts.crashed}}};exports.SessionFlusher=SessionFlusher}});var require_api=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/api.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),SENTRY_API_VERSION="7";function getBaseApiEndpoint(dsn){let protocol=dsn.protocol?`${dsn.protocol}:`:"",port=dsn.port?`:${dsn.port}`:"";return`${protocol}//${dsn.host}${port}${dsn.path?`/${dsn.path}`:""}/api/`}function _getIngestEndpoint(dsn){return`${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`}function _encodedAuth(dsn,sdkInfo){return utils.urlEncode({sentry_key:dsn.publicKey,sentry_version:SENTRY_API_VERSION,...sdkInfo&&{sentry_client:`${sdkInfo.name}/${sdkInfo.version}`}})}function getEnvelopeEndpointWithUrlEncodedAuth(dsn,tunnelOrOptions={}){let tunnel=typeof tunnelOrOptions=="string"?tunnelOrOptions:tunnelOrOptions.tunnel,sdkInfo=typeof tunnelOrOptions=="string"||!tunnelOrOptions._metadata?void 0:tunnelOrOptions._metadata.sdk;return tunnel||`${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn,sdkInfo)}`}function getReportDialogEndpoint(dsnLike,dialogOptions){let dsn=utils.makeDsn(dsnLike);if(!dsn)return"";let endpoint=`${getBaseApiEndpoint(dsn)}embed/error-page/`,encodedOptions=`dsn=${utils.dsnToString(dsn)}`;for(let key in dialogOptions)if(key!=="dsn"&&key!=="onClose")if(key==="user"){let user=dialogOptions.user;if(!user)continue;user.name&&(encodedOptions+=`&name=${encodeURIComponent(user.name)}`),user.email&&(encodedOptions+=`&email=${encodeURIComponent(user.email)}`)}else encodedOptions+=`&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key])}`;return`${endpoint}?${encodedOptions}`}exports.getEnvelopeEndpointWithUrlEncodedAuth=getEnvelopeEndpointWithUrlEncodedAuth;exports.getReportDialogEndpoint=getReportDialogEndpoint}});var require_integration=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integration.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),eventProcessors=require_eventProcessors(),exports$1=require_exports(),hub=require_hub(),installedIntegrations=[];function filterDuplicates(integrations){let integrationsByName={};return integrations.forEach(currentInstance=>{let{name}=currentInstance,existingInstance=integrationsByName[name];existingInstance&&!existingInstance.isDefaultInstance&¤tInstance.isDefaultInstance||(integrationsByName[name]=currentInstance)}),Object.keys(integrationsByName).map(k=>integrationsByName[k])}function getIntegrationsToSetup(options){let defaultIntegrations=options.defaultIntegrations||[],userIntegrations=options.integrations;defaultIntegrations.forEach(integration=>{integration.isDefaultInstance=!0});let integrations;Array.isArray(userIntegrations)?integrations=[...defaultIntegrations,...userIntegrations]:typeof userIntegrations=="function"?integrations=utils.arrayify(userIntegrations(defaultIntegrations)):integrations=defaultIntegrations;let finalIntegrations=filterDuplicates(integrations),debugIndex=findIndex(finalIntegrations,integration=>integration.name==="Debug");if(debugIndex!==-1){let[debugInstance]=finalIntegrations.splice(debugIndex,1);finalIntegrations.push(debugInstance)}return finalIntegrations}function setupIntegrations(client,integrations){let integrationIndex={};return integrations.forEach(integration=>{integration&&setupIntegration(client,integration,integrationIndex)}),integrationIndex}function afterSetupIntegrations(client,integrations){for(let integration of integrations)integration&&integration.afterAllSetup&&integration.afterAllSetup(client)}function setupIntegration(client,integration,integrationIndex){if(integrationIndex[integration.name]){debugBuild.DEBUG_BUILD&&utils.logger.log(`Integration skipped because it was already installed: ${integration.name}`);return}if(integrationIndex[integration.name]=integration,installedIntegrations.indexOf(integration.name)===-1&&(integration.setupOnce(eventProcessors.addGlobalEventProcessor,hub.getCurrentHub),installedIntegrations.push(integration.name)),integration.setup&&typeof integration.setup=="function"&&integration.setup(client),client.on&&typeof integration.preprocessEvent=="function"){let callback=integration.preprocessEvent.bind(integration);client.on("preprocessEvent",(event,hint)=>callback(event,hint,client))}if(client.addEventProcessor&&typeof integration.processEvent=="function"){let callback=integration.processEvent.bind(integration),processor=Object.assign((event,hint)=>callback(event,hint,client),{id:integration.name});client.addEventProcessor(processor)}debugBuild.DEBUG_BUILD&&utils.logger.log(`Integration installed: ${integration.name}`)}function addIntegration(integration){let client=exports$1.getClient();if(!client||!client.addIntegration){debugBuild.DEBUG_BUILD&&utils.logger.warn(`Cannot add integration "${integration.name}" because no SDK Client is available.`);return}client.addIntegration(integration)}function findIndex(arr,callback){for(let i=0;i<arr.length;i++)if(callback(arr[i])===!0)return i;return-1}function convertIntegrationFnToClass(name,fn){return Object.assign(function(...args){return fn(...args)},{id:name})}function defineIntegration(fn){return fn}exports.addIntegration=addIntegration;exports.afterSetupIntegrations=afterSetupIntegrations;exports.convertIntegrationFnToClass=convertIntegrationFnToClass;exports.defineIntegration=defineIntegration;exports.getIntegrationsToSetup=getIntegrationsToSetup;exports.installedIntegrations=installedIntegrations;exports.setupIntegration=setupIntegration;exports.setupIntegrations=setupIntegrations}});var require_utils2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/utils.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function getBucketKey(metricType,name,unit,tags){let stringifiedTags=Object.entries(utils.dropUndefinedKeys(tags)).sort((a,b)=>a[0].localeCompare(b[0]));return`${metricType}${name}${unit}${stringifiedTags}`}function simpleHash(s){let rv=0;for(let i=0;i<s.length;i++){let c=s.charCodeAt(i);rv=(rv<<5)-rv+c,rv&=rv}return rv>>>0}function serializeMetricBuckets(metricBucketItems){let out="";for(let item of metricBucketItems){let tagEntries=Object.entries(item.tags),maybeTags=tagEntries.length>0?`|#${tagEntries.map(([key,value])=>`${key}:${value}`).join(",")}`:"";out+=`${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}
|
|
18
|
+
`}return out}function sanitizeUnit(unit){return unit.replace(/[^\w]+/gi,"_")}function sanitizeMetricKey(key){return key.replace(/[^\w\-.]+/gi,"_")}function sanitizeTagKey(key){return key.replace(/[^\w\-./]+/gi,"")}var tagValueReplacements=[[`
|
|
19
|
+
`,"\\n"],["\r","\\r"],[" ","\\t"],["\\","\\\\"],["|","\\u{7c}"],[",","\\u{2c}"]];function getCharOrReplacement(input){for(let[search,replacement]of tagValueReplacements)if(input===search)return replacement;return input}function sanitizeTagValue(value){return[...value].reduce((acc,char)=>acc+getCharOrReplacement(char),"")}function sanitizeTags(unsanitizedTags){let tags={};for(let key in unsanitizedTags)if(Object.prototype.hasOwnProperty.call(unsanitizedTags,key)){let sanitizedKey=sanitizeTagKey(key);tags[sanitizedKey]=sanitizeTagValue(String(unsanitizedTags[key]))}return tags}exports.getBucketKey=getBucketKey;exports.sanitizeMetricKey=sanitizeMetricKey;exports.sanitizeTags=sanitizeTags;exports.sanitizeUnit=sanitizeUnit;exports.serializeMetricBuckets=serializeMetricBuckets;exports.simpleHash=simpleHash}});var require_envelope3=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/envelope.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),utils$1=require_utils2();function createMetricEnvelope(metricBucketItems,dsn,metadata,tunnel){let headers={sent_at:new Date().toISOString()};metadata&&metadata.sdk&&(headers.sdk={name:metadata.sdk.name,version:metadata.sdk.version}),tunnel&&dsn&&(headers.dsn=utils.dsnToString(dsn));let item=createMetricEnvelopeItem(metricBucketItems);return utils.createEnvelope(headers,[item])}function createMetricEnvelopeItem(metricBucketItems){let payload=utils$1.serializeMetricBuckets(metricBucketItems);return[{type:"statsd",length:payload.length},payload]}exports.createMetricEnvelope=createMetricEnvelope}});var require_baseclient=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/baseclient.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),api=require_api(),debugBuild=require_debug_build2(),envelope=require_envelope2(),exports$1=require_exports(),hub=require_hub(),integration=require_integration(),envelope$1=require_envelope3(),session=require_session(),dynamicSamplingContext=require_dynamicSamplingContext(),prepareEvent=require_prepareEvent(),ALREADY_SEEN_ERROR="Not capturing exception because it's already been captured.",BaseClient=class{constructor(options){if(this._options=options,this._integrations={},this._integrationsInitialized=!1,this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],options.dsn?this._dsn=utils.makeDsn(options.dsn):debugBuild.DEBUG_BUILD&&utils.logger.warn("No DSN provided, client will not send events."),this._dsn){let url=api.getEnvelopeEndpointWithUrlEncodedAuth(this._dsn,options);this._transport=options.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...options.transportOptions,url})}}captureException(exception,hint,scope){if(utils.checkOrSetAlreadyCaught(exception)){debugBuild.DEBUG_BUILD&&utils.logger.log(ALREADY_SEEN_ERROR);return}let eventId=hint&&hint.event_id;return this._process(this.eventFromException(exception,hint).then(event=>this._captureEvent(event,hint,scope)).then(result=>{eventId=result})),eventId}captureMessage(message,level,hint,scope){let eventId=hint&&hint.event_id,eventMessage=utils.isParameterizedString(message)?message:String(message),promisedEvent=utils.isPrimitive(message)?this.eventFromMessage(eventMessage,level,hint):this.eventFromException(message,hint);return this._process(promisedEvent.then(event=>this._captureEvent(event,hint,scope)).then(result=>{eventId=result})),eventId}captureEvent(event,hint,scope){if(hint&&hint.originalException&&utils.checkOrSetAlreadyCaught(hint.originalException)){debugBuild.DEBUG_BUILD&&utils.logger.log(ALREADY_SEEN_ERROR);return}let eventId=hint&&hint.event_id,capturedSpanScope=(event.sdkProcessingMetadata||{}).capturedSpanScope;return this._process(this._captureEvent(event,hint,capturedSpanScope||scope).then(result=>{eventId=result})),eventId}captureSession(session$1){typeof session$1.release!="string"?debugBuild.DEBUG_BUILD&&utils.logger.warn("Discarded session because of missing or non-string release"):(this.sendSession(session$1),session.updateSession(session$1,{init:!1}))}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(timeout){let transport=this._transport;return transport?(this.metricsAggregator&&this.metricsAggregator.flush(),this._isClientDoneProcessing(timeout).then(clientFinished=>transport.flush(timeout).then(transportFlushed=>clientFinished&&transportFlushed))):utils.resolvedSyncPromise(!0)}close(timeout){return this.flush(timeout).then(result=>(this.getOptions().enabled=!1,this.metricsAggregator&&this.metricsAggregator.close(),result))}getEventProcessors(){return this._eventProcessors}addEventProcessor(eventProcessor){this._eventProcessors.push(eventProcessor)}setupIntegrations(forceInitialize){(forceInitialize&&!this._integrationsInitialized||this._isEnabled()&&!this._integrationsInitialized)&&this._setupIntegrations()}init(){this._isEnabled()&&this._setupIntegrations()}getIntegrationById(integrationId){return this.getIntegrationByName(integrationId)}getIntegrationByName(integrationName){return this._integrations[integrationName]}getIntegration(integration2){try{return this._integrations[integration2.id]||null}catch{return debugBuild.DEBUG_BUILD&&utils.logger.warn(`Cannot retrieve integration ${integration2.id} from the current Client`),null}}addIntegration(integration$1){let isAlreadyInstalled=this._integrations[integration$1.name];integration.setupIntegration(this,integration$1,this._integrations),isAlreadyInstalled||integration.afterSetupIntegrations(this,[integration$1])}sendEvent(event,hint={}){this.emit("beforeSendEvent",event,hint);let env=envelope.createEventEnvelope(event,this._dsn,this._options._metadata,this._options.tunnel);for(let attachment of hint.attachments||[])env=utils.addItemToEnvelope(env,utils.createAttachmentEnvelopeItem(attachment,this._options.transportOptions&&this._options.transportOptions.textEncoder));let promise=this._sendEnvelope(env);promise&&promise.then(sendResponse=>this.emit("afterSendEvent",event,sendResponse),null)}sendSession(session2){let env=envelope.createSessionEnvelope(session2,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(env)}recordDroppedEvent(reason,category,eventOrCount){if(this._options.sendClientReports){let count=typeof eventOrCount=="number"?eventOrCount:1,key=`${reason}:${category}`;debugBuild.DEBUG_BUILD&&utils.logger.log(`Recording outcome: "${key}"${count>1?` (${count} times)`:""}`),this._outcomes[key]=(this._outcomes[key]||0)+count}}captureAggregateMetrics(metricBucketItems){debugBuild.DEBUG_BUILD&&utils.logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);let metricsEnvelope=envelope$1.createMetricEnvelope(metricBucketItems,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(metricsEnvelope)}on(hook,callback){this._hooks[hook]||(this._hooks[hook]=[]),this._hooks[hook].push(callback)}emit(hook,...rest){this._hooks[hook]&&this._hooks[hook].forEach(callback=>callback(...rest))}_setupIntegrations(){let{integrations}=this._options;this._integrations=integration.setupIntegrations(this,integrations),integration.afterSetupIntegrations(this,integrations),this._integrationsInitialized=!0}_updateSessionFromEvent(session$1,event){let crashed=!1,errored=!1,exceptions=event.exception&&event.exception.values;if(exceptions){errored=!0;for(let ex of exceptions){let mechanism=ex.mechanism;if(mechanism&&mechanism.handled===!1){crashed=!0;break}}}let sessionNonTerminal=session$1.status==="ok";(sessionNonTerminal&&session$1.errors===0||sessionNonTerminal&&crashed)&&(session.updateSession(session$1,{...crashed&&{status:"crashed"},errors:session$1.errors||Number(errored||crashed)}),this.captureSession(session$1))}_isClientDoneProcessing(timeout){return new utils.SyncPromise(resolve=>{let ticked=0,tick=1,interval=setInterval(()=>{this._numProcessing==0?(clearInterval(interval),resolve(!0)):(ticked+=tick,timeout&&ticked>=timeout&&(clearInterval(interval),resolve(!1)))},tick)})}_isEnabled(){return this.getOptions().enabled!==!1&&this._transport!==void 0}_prepareEvent(event,hint,scope,isolationScope=hub.getIsolationScope()){let options=this.getOptions(),integrations=Object.keys(this._integrations);return!hint.integrations&&integrations.length>0&&(hint.integrations=integrations),this.emit("preprocessEvent",event,hint),prepareEvent.prepareEvent(options,event,hint,scope,this,isolationScope).then(evt=>{if(evt===null)return evt;let propagationContext={...isolationScope.getPropagationContext(),...scope?scope.getPropagationContext():void 0};if(!(evt.contexts&&evt.contexts.trace)&&propagationContext){let{traceId:trace_id,spanId,parentSpanId,dsc}=propagationContext;evt.contexts={trace:{trace_id,span_id:spanId,parent_span_id:parentSpanId},...evt.contexts};let dynamicSamplingContext$1=dsc||dynamicSamplingContext.getDynamicSamplingContextFromClient(trace_id,this,scope);evt.sdkProcessingMetadata={dynamicSamplingContext:dynamicSamplingContext$1,...evt.sdkProcessingMetadata}}return evt})}_captureEvent(event,hint={},scope){return this._processEvent(event,hint,scope).then(finalEvent=>finalEvent.event_id,reason=>{if(debugBuild.DEBUG_BUILD){let sentryError=reason;sentryError.logLevel==="log"?utils.logger.log(sentryError.message):utils.logger.warn(sentryError)}})}_processEvent(event,hint,scope){let options=this.getOptions(),{sampleRate}=options,isTransaction=isTransactionEvent(event),isError=isErrorEvent(event),eventType=event.type||"error",beforeSendLabel=`before send for type \`${eventType}\``;if(isError&&typeof sampleRate=="number"&&Math.random()>sampleRate)return this.recordDroppedEvent("sample_rate","error",event),utils.rejectedSyncPromise(new utils.SentryError(`Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,"log"));let dataCategory=eventType==="replay_event"?"replay":eventType,capturedSpanIsolationScope=(event.sdkProcessingMetadata||{}).capturedSpanIsolationScope;return this._prepareEvent(event,hint,scope,capturedSpanIsolationScope).then(prepared=>{if(prepared===null)throw this.recordDroppedEvent("event_processor",dataCategory,event),new utils.SentryError("An event processor returned `null`, will not send event.","log");if(hint.data&&hint.data.__sentry__===!0)return prepared;let result=processBeforeSend(options,prepared,hint);return _validateBeforeSendResult(result,beforeSendLabel)}).then(processedEvent=>{if(processedEvent===null){if(this.recordDroppedEvent("before_send",dataCategory,event),isTransaction){let spanCount=1+(event.spans||[]).length;this.recordDroppedEvent("before_send","span",spanCount)}throw new utils.SentryError(`${beforeSendLabel} returned \`null\`, will not send event.`,"log")}let session2=scope&&scope.getSession();if(!isTransaction&&session2&&this._updateSessionFromEvent(session2,processedEvent),isTransaction){let spanCountBefore=processedEvent.sdkProcessingMetadata&&processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing||0,spanCountAfter=processedEvent.spans?processedEvent.spans.length:0,droppedSpanCount=spanCountBefore-spanCountAfter;droppedSpanCount>0&&this.recordDroppedEvent("before_send","span",droppedSpanCount)}let transactionInfo=processedEvent.transaction_info;if(isTransaction&&transactionInfo&&processedEvent.transaction!==event.transaction){let source="custom";processedEvent.transaction_info={...transactionInfo,source}}return this.sendEvent(processedEvent,hint),processedEvent}).then(null,reason=>{throw reason instanceof utils.SentryError?reason:(this.captureException(reason,{data:{__sentry__:!0},originalException:reason}),new utils.SentryError(`Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.
|
|
20
|
+
Reason: ${reason}`))})}_process(promise){this._numProcessing++,promise.then(value=>(this._numProcessing--,value),reason=>(this._numProcessing--,reason))}_sendEnvelope(envelope2){if(this.emit("beforeEnvelope",envelope2),this._isEnabled()&&this._transport)return this._transport.send(envelope2).then(null,reason=>{debugBuild.DEBUG_BUILD&&utils.logger.error("Error while sending event:",reason)});debugBuild.DEBUG_BUILD&&utils.logger.error("Transport disabled")}_clearOutcomes(){let outcomes=this._outcomes;return this._outcomes={},Object.keys(outcomes).map(key=>{let[reason,category]=key.split(":");return{reason,category,quantity:outcomes[key]}})}};function _validateBeforeSendResult(beforeSendResult,beforeSendLabel){let invalidValueError=`${beforeSendLabel} must return \`null\` or a valid event.`;if(utils.isThenable(beforeSendResult))return beforeSendResult.then(event=>{if(!utils.isPlainObject(event)&&event!==null)throw new utils.SentryError(invalidValueError);return event},e=>{throw new utils.SentryError(`${beforeSendLabel} rejected with ${e}`)});if(!utils.isPlainObject(beforeSendResult)&&beforeSendResult!==null)throw new utils.SentryError(invalidValueError);return beforeSendResult}function processBeforeSend(options,event,hint){let{beforeSend,beforeSendTransaction}=options;if(isErrorEvent(event)&&beforeSend)return beforeSend(event,hint);if(isTransactionEvent(event)&&beforeSendTransaction){if(event.spans){let spanCountBefore=event.spans.length;event.sdkProcessingMetadata={...event.sdkProcessingMetadata,spanCountBeforeProcessing:spanCountBefore}}return beforeSendTransaction(event,hint)}return event}function isErrorEvent(event){return event.type===void 0}function isTransactionEvent(event){return event.type==="transaction"}function addEventProcessor(callback){let client=exports$1.getClient();!client||!client.addEventProcessor||client.addEventProcessor(callback)}exports.BaseClient=BaseClient;exports.addEventProcessor=addEventProcessor}});var require_checkin=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/checkin.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function createCheckInEnvelope(checkIn,dynamicSamplingContext,metadata,tunnel,dsn){let headers={sent_at:new Date().toISOString()};metadata&&metadata.sdk&&(headers.sdk={name:metadata.sdk.name,version:metadata.sdk.version}),tunnel&&dsn&&(headers.dsn=utils.dsnToString(dsn)),dynamicSamplingContext&&(headers.trace=utils.dropUndefinedKeys(dynamicSamplingContext));let item=createCheckInEnvelopeItem(checkIn);return utils.createEnvelope(headers,[item])}function createCheckInEnvelopeItem(checkIn){return[{type:"check_in"},checkIn]}exports.createCheckInEnvelope=createCheckInEnvelope}});var require_constants2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/constants.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var COUNTER_METRIC_TYPE="c",GAUGE_METRIC_TYPE="g",SET_METRIC_TYPE="s",DISTRIBUTION_METRIC_TYPE="d",DEFAULT_BROWSER_FLUSH_INTERVAL=5e3,DEFAULT_FLUSH_INTERVAL=1e4,MAX_WEIGHT=1e4;exports.COUNTER_METRIC_TYPE=COUNTER_METRIC_TYPE;exports.DEFAULT_BROWSER_FLUSH_INTERVAL=DEFAULT_BROWSER_FLUSH_INTERVAL;exports.DEFAULT_FLUSH_INTERVAL=DEFAULT_FLUSH_INTERVAL;exports.DISTRIBUTION_METRIC_TYPE=DISTRIBUTION_METRIC_TYPE;exports.GAUGE_METRIC_TYPE=GAUGE_METRIC_TYPE;exports.MAX_WEIGHT=MAX_WEIGHT;exports.SET_METRIC_TYPE=SET_METRIC_TYPE}});var require_instance=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/instance.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var constants=require_constants2(),utils=require_utils2(),CounterMetric=class{constructor(_value){this._value=_value}get weight(){return 1}add(value){this._value+=value}toString(){return`${this._value}`}},GaugeMetric=class{constructor(value){this._last=value,this._min=value,this._max=value,this._sum=value,this._count=1}get weight(){return 5}add(value){this._last=value,value<this._min&&(this._min=value),value>this._max&&(this._max=value),this._sum+=value,this._count++}toString(){return`${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`}},DistributionMetric=class{constructor(first){this._value=[first]}get weight(){return this._value.length}add(value){this._value.push(value)}toString(){return this._value.join(":")}},SetMetric=class{constructor(first){this.first=first,this._value=new Set([first])}get weight(){return this._value.size}add(value){this._value.add(value)}toString(){return Array.from(this._value).map(val=>typeof val=="string"?utils.simpleHash(val):val).join(":")}},METRIC_MAP={[constants.COUNTER_METRIC_TYPE]:CounterMetric,[constants.GAUGE_METRIC_TYPE]:GaugeMetric,[constants.DISTRIBUTION_METRIC_TYPE]:DistributionMetric,[constants.SET_METRIC_TYPE]:SetMetric};exports.CounterMetric=CounterMetric;exports.DistributionMetric=DistributionMetric;exports.GaugeMetric=GaugeMetric;exports.METRIC_MAP=METRIC_MAP;exports.SetMetric=SetMetric}});var require_aggregator=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/aggregator.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils$1=require_cjs(),constants=require_constants2(),instance=require_instance(),metricSummary=require_metric_summary(),utils=require_utils2(),MetricsAggregator=class{constructor(_client){this._client=_client,this._buckets=new Map,this._bucketsTotalWeight=0,this._interval=setInterval(()=>this._flush(),constants.DEFAULT_FLUSH_INTERVAL),this._interval.unref&&this._interval.unref(),this._flushShift=Math.floor(Math.random()*constants.DEFAULT_FLUSH_INTERVAL/1e3),this._forceFlush=!1}add(metricType,unsanitizedName,value,unsanitizedUnit="none",unsanitizedTags={},maybeFloatTimestamp=utils$1.timestampInSeconds()){let timestamp=Math.floor(maybeFloatTimestamp),name=utils.sanitizeMetricKey(unsanitizedName),tags=utils.sanitizeTags(unsanitizedTags),unit=utils.sanitizeUnit(unsanitizedUnit),bucketKey=utils.getBucketKey(metricType,name,unit,tags),bucketItem=this._buckets.get(bucketKey),previousWeight=bucketItem&&metricType===constants.SET_METRIC_TYPE?bucketItem.metric.weight:0;bucketItem?(bucketItem.metric.add(value),bucketItem.timestamp<timestamp&&(bucketItem.timestamp=timestamp)):(bucketItem={metric:new instance.METRIC_MAP[metricType](value),timestamp,metricType,name,unit,tags},this._buckets.set(bucketKey,bucketItem));let val=typeof value=="string"?bucketItem.metric.weight-previousWeight:value;metricSummary.updateMetricSummaryOnActiveSpan(metricType,name,val,unit,unsanitizedTags,bucketKey),this._bucketsTotalWeight+=bucketItem.metric.weight,this._bucketsTotalWeight>=constants.MAX_WEIGHT&&this.flush()}flush(){this._forceFlush=!0,this._flush()}close(){this._forceFlush=!0,clearInterval(this._interval),this._flush()}_flush(){if(this._forceFlush){this._forceFlush=!1,this._bucketsTotalWeight=0,this._captureMetrics(this._buckets),this._buckets.clear();return}let cutoffSeconds=Math.floor(utils$1.timestampInSeconds())-constants.DEFAULT_FLUSH_INTERVAL/1e3-this._flushShift,flushedBuckets=new Map;for(let[key,bucket]of this._buckets)bucket.timestamp<=cutoffSeconds&&(flushedBuckets.set(key,bucket),this._bucketsTotalWeight-=bucket.metric.weight);for(let[key]of flushedBuckets)this._buckets.delete(key);this._captureMetrics(flushedBuckets)}_captureMetrics(flushedBuckets){if(flushedBuckets.size>0&&this._client.captureAggregateMetrics){let buckets=Array.from(flushedBuckets).map(([,bucketItem])=>bucketItem);this._client.captureAggregateMetrics(buckets)}}};exports.MetricsAggregator=MetricsAggregator}});var require_server_runtime_client=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/server-runtime-client.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),baseclient=require_baseclient(),checkin=require_checkin(),debugBuild=require_debug_build2(),exports$1=require_exports(),aggregator=require_aggregator(),sessionflusher=require_sessionflusher(),hubextensions=require_hubextensions(),spanUtils=require_spanUtils(),getRootSpan=require_getRootSpan();require_spanstatus();var dynamicSamplingContext=require_dynamicSamplingContext(),ServerRuntimeClient=class extends baseclient.BaseClient{constructor(options){hubextensions.addTracingExtensions(),super(options),options._experiments&&options._experiments.metricsAggregator&&(this.metricsAggregator=new aggregator.MetricsAggregator(this))}eventFromException(exception,hint){return utils.resolvedSyncPromise(utils.eventFromUnknownInput(exports$1.getClient(),this._options.stackParser,exception,hint))}eventFromMessage(message,level="info",hint){return utils.resolvedSyncPromise(utils.eventFromMessage(this._options.stackParser,message,level,hint,this._options.attachStacktrace))}captureException(exception,hint,scope){if(this._options.autoSessionTracking&&this._sessionFlusher&&scope){let requestSession=scope.getRequestSession();requestSession&&requestSession.status==="ok"&&(requestSession.status="errored")}return super.captureException(exception,hint,scope)}captureEvent(event,hint,scope){if(this._options.autoSessionTracking&&this._sessionFlusher&&scope&&(event.type||"exception")==="exception"&&event.exception&&event.exception.values&&event.exception.values.length>0){let requestSession=scope.getRequestSession();requestSession&&requestSession.status==="ok"&&(requestSession.status="errored")}return super.captureEvent(event,hint,scope)}close(timeout){return this._sessionFlusher&&this._sessionFlusher.close(),super.close(timeout)}initSessionFlusher(){let{release,environment}=this._options;release?this._sessionFlusher=new sessionflusher.SessionFlusher(this,{release,environment}):debugBuild.DEBUG_BUILD&&utils.logger.warn("Cannot initialise an instance of SessionFlusher if no release is provided!")}captureCheckIn(checkIn,monitorConfig,scope){let id="checkInId"in checkIn&&checkIn.checkInId?checkIn.checkInId:utils.uuid4();if(!this._isEnabled())return debugBuild.DEBUG_BUILD&&utils.logger.warn("SDK not enabled, will not capture checkin."),id;let options=this.getOptions(),{release,environment,tunnel}=options,serializedCheckIn={check_in_id:id,monitor_slug:checkIn.monitorSlug,status:checkIn.status,release,environment};"duration"in checkIn&&(serializedCheckIn.duration=checkIn.duration),monitorConfig&&(serializedCheckIn.monitor_config={schedule:monitorConfig.schedule,checkin_margin:monitorConfig.checkinMargin,max_runtime:monitorConfig.maxRuntime,timezone:monitorConfig.timezone});let[dynamicSamplingContext2,traceContext]=this._getTraceInfoFromScope(scope);traceContext&&(serializedCheckIn.contexts={trace:traceContext});let envelope=checkin.createCheckInEnvelope(serializedCheckIn,dynamicSamplingContext2,this.getSdkMetadata(),tunnel,this.getDsn());return debugBuild.DEBUG_BUILD&&utils.logger.info("Sending checkin:",checkIn.monitorSlug,checkIn.status),this._sendEnvelope(envelope),id}_captureRequestSession(){this._sessionFlusher?this._sessionFlusher.incrementSessionStatusCount():debugBuild.DEBUG_BUILD&&utils.logger.warn("Discarded request mode session because autoSessionTracking option was disabled")}_prepareEvent(event,hint,scope,isolationScope){return this._options.platform&&(event.platform=event.platform||this._options.platform),this._options.runtime&&(event.contexts={...event.contexts,runtime:(event.contexts||{}).runtime||this._options.runtime}),this._options.serverName&&(event.server_name=event.server_name||this._options.serverName),super._prepareEvent(event,hint,scope,isolationScope)}_getTraceInfoFromScope(scope){if(!scope)return[void 0,void 0];let span=scope.getSpan();if(span)return[getRootSpan.getRootSpan(span)?dynamicSamplingContext.getDynamicSamplingContextFromSpan(span):void 0,spanUtils.spanToTraceContext(span)];let{traceId,spanId,parentSpanId,dsc}=scope.getPropagationContext(),traceContext={trace_id:traceId,span_id:spanId,parent_span_id:parentSpanId};return dsc?[dsc,traceContext]:[dynamicSamplingContext.getDynamicSamplingContextFromClient(traceId,this,scope),traceContext]}};exports.ServerRuntimeClient=ServerRuntimeClient}});var require_sdk=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/sdk.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),exports$1=require_exports(),hub=require_hub();function initAndBind(clientClass,options){options.debug===!0&&(debugBuild.DEBUG_BUILD?utils.logger.enable():utils.consoleSandbox(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")})),exports$1.getCurrentScope().update(options.initialScope);let client=new clientClass(options);setCurrentClient(client),initializeClient(client)}function setCurrentClient(client){let top=hub.getCurrentHub().getStackTop();top.client=client,top.scope.setClient(client)}function initializeClient(client){client.init?client.init():client.setupIntegrations&&client.setupIntegrations()}exports.initAndBind=initAndBind;exports.setCurrentClient=setCurrentClient}});var require_base=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/base.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),DEFAULT_TRANSPORT_BUFFER_SIZE=30;function createTransport(options,makeRequest,buffer=utils.makePromiseBuffer(options.bufferSize||DEFAULT_TRANSPORT_BUFFER_SIZE)){let rateLimits={},flush=timeout=>buffer.drain(timeout);function send(envelope){let filteredEnvelopeItems=[];if(utils.forEachEnvelopeItem(envelope,(item,type)=>{let dataCategory=utils.envelopeItemTypeToDataCategory(type);if(utils.isRateLimited(rateLimits,dataCategory)){let event=getEventForEnvelopeItem(item,type);options.recordDroppedEvent("ratelimit_backoff",dataCategory,event)}else filteredEnvelopeItems.push(item)}),filteredEnvelopeItems.length===0)return utils.resolvedSyncPromise();let filteredEnvelope=utils.createEnvelope(envelope[0],filteredEnvelopeItems),recordEnvelopeLoss=reason=>{utils.forEachEnvelopeItem(filteredEnvelope,(item,type)=>{let event=getEventForEnvelopeItem(item,type);options.recordDroppedEvent(reason,utils.envelopeItemTypeToDataCategory(type),event)})},requestTask=()=>makeRequest({body:utils.serializeEnvelope(filteredEnvelope,options.textEncoder)}).then(response=>(response.statusCode!==void 0&&(response.statusCode<200||response.statusCode>=300)&&debugBuild.DEBUG_BUILD&&utils.logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`),rateLimits=utils.updateRateLimits(rateLimits,response),response),error=>{throw recordEnvelopeLoss("network_error"),error});return buffer.add(requestTask).then(result=>result,error=>{if(error instanceof utils.SentryError)return debugBuild.DEBUG_BUILD&&utils.logger.error("Skipped sending event because buffer is full."),recordEnvelopeLoss("queue_overflow"),utils.resolvedSyncPromise();throw error})}return send.__sentry__baseTransport__=!0,{send,flush}}function getEventForEnvelopeItem(item,type){if(!(type!=="event"&&type!=="transaction"))return Array.isArray(item)?item[1]:void 0}exports.DEFAULT_TRANSPORT_BUFFER_SIZE=DEFAULT_TRANSPORT_BUFFER_SIZE;exports.createTransport=createTransport}});var require_offline=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/offline.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),MIN_DELAY=100,START_DELAY=5e3,MAX_DELAY=36e5;function log(msg,error){debugBuild.DEBUG_BUILD&&utils.logger.info(`[Offline]: ${msg}`,error)}function makeOfflineTransport(createTransport){return options=>{let transport=createTransport(options),store=options.createStore?options.createStore(options):void 0,retryDelay=START_DELAY,flushTimer;function shouldQueue(env,error,retryDelay2){return utils.envelopeContainsItemType(env,["replay_event","replay_recording","client_report"])?!1:options.shouldStore?options.shouldStore(env,error,retryDelay2):!0}function flushIn(delay){store&&(flushTimer&&clearTimeout(flushTimer),flushTimer=setTimeout(async()=>{flushTimer=void 0;let found=await store.pop();found&&(log("Attempting to send previously queued event"),send(found).catch(e=>{log("Failed to retry sending",e)}))},delay),typeof flushTimer!="number"&&flushTimer.unref&&flushTimer.unref())}function flushWithBackOff(){flushTimer||(flushIn(retryDelay),retryDelay=Math.min(retryDelay*2,MAX_DELAY))}async function send(envelope){try{let result=await transport.send(envelope),delay=MIN_DELAY;if(result){if(result.headers&&result.headers["retry-after"])delay=utils.parseRetryAfterHeader(result.headers["retry-after"]);else if((result.statusCode||0)>=400)return result}return flushIn(delay),retryDelay=START_DELAY,result}catch(e){if(store&&await shouldQueue(envelope,e,retryDelay))return await store.insert(envelope),flushWithBackOff(),log("Error sending. Event queued",e),{};throw e}}return options.flushAtStartup&&flushWithBackOff(),{send,flush:t=>transport.flush(t)}}}exports.MIN_DELAY=MIN_DELAY;exports.START_DELAY=START_DELAY;exports.makeOfflineTransport=makeOfflineTransport}});var require_multiplexed=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/transports/multiplexed.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),api=require_api();function eventFromEnvelope(env,types){let event;return utils.forEachEnvelopeItem(env,(item,type)=>(types.includes(type)&&(event=Array.isArray(item)?item[1]:void 0),!!event)),event}function makeOverrideReleaseTransport(createTransport,release){return options=>{let transport=createTransport(options);return{...transport,send:async envelope=>{let event=eventFromEnvelope(envelope,["event","transaction","profile","replay_event"]);return event&&(event.release=release),transport.send(envelope)}}}}function overrideDsn(envelope,dsn){return utils.createEnvelope(dsn?{...envelope[0],dsn}:envelope[0],envelope[1])}function makeMultiplexedTransport(createTransport,matcher){return options=>{let fallbackTransport=createTransport(options),otherTransports=new Map;function getTransport(dsn,release){let key=release?`${dsn}:${release}`:dsn,transport=otherTransports.get(key);if(!transport){let validatedDsn=utils.dsnFromString(dsn);if(!validatedDsn)return;let url=api.getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn,options.tunnel);transport=release?makeOverrideReleaseTransport(createTransport,release)({...options,url}):createTransport({...options,url}),otherTransports.set(key,transport)}return[dsn,transport]}async function send(envelope){function getEvent(types){let eventTypes=types&&types.length?types:["event"];return eventFromEnvelope(envelope,eventTypes)}let transports=matcher({envelope,getEvent}).map(result=>typeof result=="string"?getTransport(result,void 0):getTransport(result.dsn,result.release)).filter(t=>!!t);return transports.length===0&&transports.push(["",fallbackTransport]),(await Promise.all(transports.map(([dsn,transport])=>transport.send(overrideDsn(envelope,dsn)))))[0]}async function flush(timeout){let promises=[await fallbackTransport.flush(timeout)];for(let[,transport]of otherTransports)promises.push(await transport.flush(timeout));return promises.every(r=>r)}return{send,flush}}}exports.eventFromEnvelope=eventFromEnvelope;exports.makeMultiplexedTransport=makeMultiplexedTransport}});var require_span2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/span.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function createSpanEnvelope(spans,dsn){let headers={sent_at:new Date().toISOString()};dsn&&(headers.dsn=utils.dsnToString(dsn));let items=spans.map(createSpanItem);return utils.createEnvelope(headers,items)}function createSpanItem(span){return[{type:"span"},span]}exports.createSpanEnvelope=createSpanEnvelope}});var require_isSentryRequestUrl=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/isSentryRequestUrl.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function isSentryRequestUrl(url,hubOrClient){let client=hubOrClient&&isHub(hubOrClient)?hubOrClient.getClient():hubOrClient,dsn=client&&client.getDsn(),tunnel=client&&client.getOptions().tunnel;return checkDsn(url,dsn)||checkTunnel(url,tunnel)}function checkTunnel(url,tunnel){return tunnel?removeTrailingSlash(url)===removeTrailingSlash(tunnel):!1}function checkDsn(url,dsn){return dsn?url.includes(dsn.host):!1}function removeTrailingSlash(str){return str[str.length-1]==="/"?str.slice(0,-1):str}function isHub(hubOrClient){return hubOrClient.getClient!==void 0}exports.isSentryRequestUrl=isSentryRequestUrl}});var require_parameterize=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/parameterize.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function parameterize(strings,...values){let formatted=new String(String.raw(strings,...values));return formatted.__sentry_template_string__=strings.join("\0").replace(/%/g,"%%").replace(/\0/g,"%s"),formatted.__sentry_template_values__=values,formatted}exports.parameterize=parameterize}});var require_sdkMetadata=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/utils/sdkMetadata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var version=require_version();function applySdkMetadata(options,name,names=[name],source="npm"){let metadata=options._metadata||{};metadata.sdk||(metadata.sdk={name:`sentry.javascript.${name}`,packages:names.map(name2=>({name:`${source}:@sentry/${name2}`,version:version.SDK_VERSION})),version:version.SDK_VERSION}),options._metadata=metadata}exports.applySdkMetadata=applySdkMetadata}});var require_metadata=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metadata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),filenameMetadataMap=new Map,parsedStacks=new Set;function ensureMetadataStacksAreParsed(parser){if(utils.GLOBAL_OBJ._sentryModuleMetadata)for(let stack of Object.keys(utils.GLOBAL_OBJ._sentryModuleMetadata)){let metadata=utils.GLOBAL_OBJ._sentryModuleMetadata[stack];if(parsedStacks.has(stack))continue;parsedStacks.add(stack);let frames=parser(stack);for(let frame of frames.reverse())if(frame.filename){filenameMetadataMap.set(frame.filename,metadata);break}}}function getMetadataForUrl(parser,filename){return ensureMetadataStacksAreParsed(parser),filenameMetadataMap.get(filename)}function addMetadataToStackFrames(parser,event){try{event.exception.values.forEach(exception=>{if(exception.stacktrace)for(let frame of exception.stacktrace.frames||[]){if(!frame.filename)continue;let metadata=getMetadataForUrl(parser,frame.filename);metadata&&(frame.module_metadata=metadata)}})}catch{}}function stripMetadataFromStackFrames(event){try{event.exception.values.forEach(exception=>{if(exception.stacktrace)for(let frame of exception.stacktrace.frames||[])delete frame.module_metadata})}catch{}}exports.addMetadataToStackFrames=addMetadataToStackFrames;exports.getMetadataForUrl=getMetadataForUrl;exports.stripMetadataFromStackFrames=stripMetadataFromStackFrames}});var require_metadata2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/metadata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),integration=require_integration(),metadata=require_metadata(),INTEGRATION_NAME="ModuleMetadata",_moduleMetadataIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){},setup(client){typeof client.on=="function"&&client.on("beforeEnvelope",envelope=>{utils.forEachEnvelopeItem(envelope,(item,type)=>{if(type==="event"){let event=Array.isArray(item)?item[1]:void 0;event&&(metadata.stripMetadataFromStackFrames(event),item[1]=event)}})})},processEvent(event,_hint,client){let stackParser=client.getOptions().stackParser;return metadata.addMetadataToStackFrames(stackParser,event),event}}),moduleMetadataIntegration=integration.defineIntegration(_moduleMetadataIntegration),ModuleMetadata=integration.convertIntegrationFnToClass(INTEGRATION_NAME,moduleMetadataIntegration);exports.ModuleMetadata=ModuleMetadata;exports.moduleMetadataIntegration=moduleMetadataIntegration}});var require_requestdata2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/requestdata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),integration=require_integration(),spanUtils=require_spanUtils(),DEFAULT_OPTIONS={include:{cookies:!0,data:!0,headers:!0,ip:!1,query_string:!0,url:!0,user:{id:!0,username:!0,email:!0}},transactionNamingScheme:"methodPath"},INTEGRATION_NAME="RequestData",_requestDataIntegration=(options={})=>{let _addRequestData=utils.addRequestDataToEvent,_options={...DEFAULT_OPTIONS,...options,include:{method:!0,...DEFAULT_OPTIONS.include,...options.include,user:options.include&&typeof options.include.user=="boolean"?options.include.user:{...DEFAULT_OPTIONS.include.user,...(options.include||{}).user}}};return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event,_hint,client){let{transactionNamingScheme}=_options,{sdkProcessingMetadata={}}=event,req=sdkProcessingMetadata.request;if(!req)return event;let addRequestDataOptions=sdkProcessingMetadata.requestDataOptionsFromExpressHandler||sdkProcessingMetadata.requestDataOptionsFromGCPWrapper||convertReqDataIntegrationOptsToAddReqDataOpts(_options),processedEvent=_addRequestData(event,req,addRequestDataOptions);if(event.type==="transaction"||transactionNamingScheme==="handler")return processedEvent;let transaction=req._sentryTransaction;if(transaction){let name=spanUtils.spanToJSON(transaction).description||"",shouldIncludeMethodInTransactionName=getSDKName(client)==="sentry.javascript.nextjs"?name.startsWith("/api"):transactionNamingScheme!=="path",[transactionValue]=utils.extractPathForTransaction(req,{path:!0,method:shouldIncludeMethodInTransactionName,customRoute:name});processedEvent.transaction=transactionValue}return processedEvent}}},requestDataIntegration=integration.defineIntegration(_requestDataIntegration),RequestData=integration.convertIntegrationFnToClass(INTEGRATION_NAME,requestDataIntegration);function convertReqDataIntegrationOptsToAddReqDataOpts(integrationOptions){let{transactionNamingScheme,include:{ip,user,...requestOptions}}=integrationOptions,requestIncludeKeys=[];for(let[key,value]of Object.entries(requestOptions))value&&requestIncludeKeys.push(key);let addReqDataUserOpt;if(user===void 0)addReqDataUserOpt=!0;else if(typeof user=="boolean")addReqDataUserOpt=user;else{let userIncludeKeys=[];for(let[key,value]of Object.entries(user))value&&userIncludeKeys.push(key);addReqDataUserOpt=userIncludeKeys}return{include:{ip,user:addReqDataUserOpt,request:requestIncludeKeys.length!==0?requestIncludeKeys:void 0,transaction:transactionNamingScheme}}}function getSDKName(client){try{return client.getOptions()._metadata.sdk.name}catch{return}}exports.RequestData=RequestData;exports.requestDataIntegration=requestDataIntegration}});var require_inboundfilters=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/inboundfilters.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),integration=require_integration(),DEFAULT_IGNORE_ERRORS=[/^Script error\.?$/,/^Javascript error: Script error\.? on line 0$/,/^ResizeObserver loop completed with undelivered notifications.$/,/^Cannot redefine property: googletag$/],DEFAULT_IGNORE_TRANSACTIONS=[/^.*\/healthcheck$/,/^.*\/healthy$/,/^.*\/live$/,/^.*\/ready$/,/^.*\/heartbeat$/,/^.*\/health$/,/^.*\/healthz$/],INTEGRATION_NAME="InboundFilters",_inboundFiltersIntegration=(options={})=>({name:INTEGRATION_NAME,setupOnce(){},processEvent(event,_hint,client){let clientOptions=client.getOptions(),mergedOptions=_mergeOptions(options,clientOptions);return _shouldDropEvent(event,mergedOptions)?null:event}}),inboundFiltersIntegration=integration.defineIntegration(_inboundFiltersIntegration),InboundFilters=integration.convertIntegrationFnToClass(INTEGRATION_NAME,inboundFiltersIntegration);function _mergeOptions(internalOptions={},clientOptions={}){return{allowUrls:[...internalOptions.allowUrls||[],...clientOptions.allowUrls||[]],denyUrls:[...internalOptions.denyUrls||[],...clientOptions.denyUrls||[]],ignoreErrors:[...internalOptions.ignoreErrors||[],...clientOptions.ignoreErrors||[],...internalOptions.disableErrorDefaults?[]:DEFAULT_IGNORE_ERRORS],ignoreTransactions:[...internalOptions.ignoreTransactions||[],...clientOptions.ignoreTransactions||[],...internalOptions.disableTransactionDefaults?[]:DEFAULT_IGNORE_TRANSACTIONS],ignoreInternal:internalOptions.ignoreInternal!==void 0?internalOptions.ignoreInternal:!0}}function _shouldDropEvent(event,options){return options.ignoreInternal&&_isSentryError(event)?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`Event dropped due to being internal Sentry Error.
|
|
21
|
+
Event: ${utils.getEventDescription(event)}`),!0):_isIgnoredError(event,options.ignoreErrors)?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`Event dropped due to being matched by \`ignoreErrors\` option.
|
|
22
|
+
Event: ${utils.getEventDescription(event)}`),!0):_isIgnoredTransaction(event,options.ignoreTransactions)?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`Event dropped due to being matched by \`ignoreTransactions\` option.
|
|
23
|
+
Event: ${utils.getEventDescription(event)}`),!0):_isDeniedUrl(event,options.denyUrls)?(debugBuild.DEBUG_BUILD&&utils.logger.warn(`Event dropped due to being matched by \`denyUrls\` option.
|
|
24
|
+
Event: ${utils.getEventDescription(event)}.
|
|
25
|
+
Url: ${_getEventFilterUrl(event)}`),!0):_isAllowedUrl(event,options.allowUrls)?!1:(debugBuild.DEBUG_BUILD&&utils.logger.warn(`Event dropped due to not being matched by \`allowUrls\` option.
|
|
26
|
+
Event: ${utils.getEventDescription(event)}.
|
|
27
|
+
Url: ${_getEventFilterUrl(event)}`),!0)}function _isIgnoredError(event,ignoreErrors){return event.type||!ignoreErrors||!ignoreErrors.length?!1:_getPossibleEventMessages(event).some(message=>utils.stringMatchesSomePattern(message,ignoreErrors))}function _isIgnoredTransaction(event,ignoreTransactions){if(event.type!=="transaction"||!ignoreTransactions||!ignoreTransactions.length)return!1;let name=event.transaction;return name?utils.stringMatchesSomePattern(name,ignoreTransactions):!1}function _isDeniedUrl(event,denyUrls){if(!denyUrls||!denyUrls.length)return!1;let url=_getEventFilterUrl(event);return url?utils.stringMatchesSomePattern(url,denyUrls):!1}function _isAllowedUrl(event,allowUrls){if(!allowUrls||!allowUrls.length)return!0;let url=_getEventFilterUrl(event);return url?utils.stringMatchesSomePattern(url,allowUrls):!0}function _getPossibleEventMessages(event){let possibleMessages=[];event.message&&possibleMessages.push(event.message);let lastException;try{lastException=event.exception.values[event.exception.values.length-1]}catch{}return lastException&&lastException.value&&(possibleMessages.push(lastException.value),lastException.type&&possibleMessages.push(`${lastException.type}: ${lastException.value}`)),debugBuild.DEBUG_BUILD&&possibleMessages.length===0&&utils.logger.error(`Could not extract message for event ${utils.getEventDescription(event)}`),possibleMessages}function _isSentryError(event){try{return event.exception.values[0].type==="SentryError"}catch{}return!1}function _getLastValidUrl(frames=[]){for(let i=frames.length-1;i>=0;i--){let frame=frames[i];if(frame&&frame.filename!=="<anonymous>"&&frame.filename!=="[native code]")return frame.filename||null}return null}function _getEventFilterUrl(event){try{let frames;try{frames=event.exception.values[0].stacktrace.frames}catch{}return frames?_getLastValidUrl(frames):null}catch{return debugBuild.DEBUG_BUILD&&utils.logger.error(`Cannot extract url for event ${utils.getEventDescription(event)}`),null}}exports.InboundFilters=InboundFilters;exports.inboundFiltersIntegration=inboundFiltersIntegration}});var require_functiontostring=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/functiontostring.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),exports$1=require_exports(),integration=require_integration(),originalFunctionToString,INTEGRATION_NAME="FunctionToString",SETUP_CLIENTS=new WeakMap,_functionToStringIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){originalFunctionToString=Function.prototype.toString;try{Function.prototype.toString=function(...args){let originalFunction=utils.getOriginalFunction(this),context=SETUP_CLIENTS.has(exports$1.getClient())&&originalFunction!==void 0?originalFunction:this;return originalFunctionToString.apply(context,args)}}catch{}},setup(client){SETUP_CLIENTS.set(client,!0)}}),functionToStringIntegration=integration.defineIntegration(_functionToStringIntegration),FunctionToString=integration.convertIntegrationFnToClass(INTEGRATION_NAME,functionToStringIntegration);exports.FunctionToString=FunctionToString;exports.functionToStringIntegration=functionToStringIntegration}});var require_linkederrors=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/linkederrors.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),integration=require_integration(),DEFAULT_KEY="cause",DEFAULT_LIMIT=5,INTEGRATION_NAME="LinkedErrors",_linkedErrorsIntegration=(options={})=>{let limit=options.limit||DEFAULT_LIMIT,key=options.key||DEFAULT_KEY;return{name:INTEGRATION_NAME,setupOnce(){},preprocessEvent(event,hint,client){let options2=client.getOptions();utils.applyAggregateErrorsToEvent(utils.exceptionFromError,options2.stackParser,options2.maxValueLength,key,limit,event,hint)}}},linkedErrorsIntegration=integration.defineIntegration(_linkedErrorsIntegration),LinkedErrors=integration.convertIntegrationFnToClass(INTEGRATION_NAME,linkedErrorsIntegration);exports.LinkedErrors=LinkedErrors;exports.linkedErrorsIntegration=linkedErrorsIntegration}});var require_integrations=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/integrations/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var functiontostring=require_functiontostring(),inboundfilters=require_inboundfilters(),linkederrors=require_linkederrors();exports.FunctionToString=functiontostring.FunctionToString;exports.InboundFilters=inboundfilters.InboundFilters;exports.LinkedErrors=linkederrors.LinkedErrors}});var require_browser_aggregator=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/browser-aggregator.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils$1=require_cjs(),constants=require_constants2(),instance=require_instance(),metricSummary=require_metric_summary(),utils=require_utils2(),BrowserMetricsAggregator=class{constructor(_client){this._client=_client,this._buckets=new Map,this._interval=setInterval(()=>this.flush(),constants.DEFAULT_BROWSER_FLUSH_INTERVAL)}add(metricType,unsanitizedName,value,unsanitizedUnit="none",unsanitizedTags={},maybeFloatTimestamp=utils$1.timestampInSeconds()){let timestamp=Math.floor(maybeFloatTimestamp),name=utils.sanitizeMetricKey(unsanitizedName),tags=utils.sanitizeTags(unsanitizedTags),unit=utils.sanitizeUnit(unsanitizedUnit),bucketKey=utils.getBucketKey(metricType,name,unit,tags),bucketItem=this._buckets.get(bucketKey),previousWeight=bucketItem&&metricType===constants.SET_METRIC_TYPE?bucketItem.metric.weight:0;bucketItem?(bucketItem.metric.add(value),bucketItem.timestamp<timestamp&&(bucketItem.timestamp=timestamp)):(bucketItem={metric:new instance.METRIC_MAP[metricType](value),timestamp,metricType,name,unit,tags},this._buckets.set(bucketKey,bucketItem));let val=typeof value=="string"?bucketItem.metric.weight-previousWeight:value;metricSummary.updateMetricSummaryOnActiveSpan(metricType,name,val,unit,unsanitizedTags,bucketKey)}flush(){if(this._buckets.size!==0){if(this._client.captureAggregateMetrics){let metricBuckets=Array.from(this._buckets).map(([,bucketItem])=>bucketItem);this._client.captureAggregateMetrics(metricBuckets)}this._buckets.clear()}}close(){clearInterval(this._interval),this.flush()}};exports.BrowserMetricsAggregator=BrowserMetricsAggregator}});var require_integration2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/integration.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var integration=require_integration(),browserAggregator=require_browser_aggregator(),INTEGRATION_NAME="MetricsAggregator",_metricsAggregatorIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){},setup(client){client.metricsAggregator=new browserAggregator.BrowserMetricsAggregator(client)}}),metricsAggregatorIntegration=integration.defineIntegration(_metricsAggregatorIntegration),MetricsAggregator=integration.convertIntegrationFnToClass(INTEGRATION_NAME,metricsAggregatorIntegration);exports.MetricsAggregator=MetricsAggregator;exports.metricsAggregatorIntegration=metricsAggregatorIntegration}});var require_exports2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/metrics/exports.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build2(),exports$1=require_exports(),spanUtils=require_spanUtils(),constants=require_constants2(),integration=require_integration2();function addToMetricsAggregator(metricType,name,value,data={}){let client=exports$1.getClient(),scope=exports$1.getCurrentScope();if(client){if(!client.metricsAggregator){debugBuild.DEBUG_BUILD&&utils.logger.warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs");return}let{unit,tags,timestamp}=data,{release,environment}=client.getOptions(),transaction=scope.getTransaction(),metricTags={};release&&(metricTags.release=release),environment&&(metricTags.environment=environment),transaction&&(metricTags.transaction=spanUtils.spanToJSON(transaction).description||""),debugBuild.DEBUG_BUILD&&utils.logger.log(`Adding value of ${value} to ${metricType} metric ${name}`),client.metricsAggregator.add(metricType,name,value,unit,{...metricTags,...tags},timestamp)}}function increment(name,value=1,data){addToMetricsAggregator(constants.COUNTER_METRIC_TYPE,name,value,data)}function distribution(name,value,data){addToMetricsAggregator(constants.DISTRIBUTION_METRIC_TYPE,name,value,data)}function set(name,value,data){addToMetricsAggregator(constants.SET_METRIC_TYPE,name,value,data)}function gauge(name,value,data){addToMetricsAggregator(constants.GAUGE_METRIC_TYPE,name,value,data)}var metrics={increment,distribution,set,gauge,MetricsAggregator:integration.MetricsAggregator,metricsAggregatorIntegration:integration.metricsAggregatorIntegration};exports.distribution=distribution;exports.gauge=gauge;exports.increment=increment;exports.metrics=metrics;exports.set=set}});var require_cjs2=__commonJS({"../../node_modules/.pnpm/@sentry+core@7.120.1/node_modules/@sentry/core/cjs/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var hubextensions=require_hubextensions(),idletransaction=require_idletransaction(),span$1=require_span(),transaction=require_transaction(),utils=require_utils(),spanstatus=require_spanstatus(),trace=require_trace(),dynamicSamplingContext=require_dynamicSamplingContext(),measurement=require_measurement(),sampling=require_sampling(),semanticAttributes=require_semanticAttributes(),envelope=require_envelope2(),exports$1=require_exports(),hub=require_hub(),session=require_session(),sessionflusher=require_sessionflusher(),scope=require_scope(),eventProcessors=require_eventProcessors(),api=require_api(),baseclient=require_baseclient(),serverRuntimeClient=require_server_runtime_client(),sdk=require_sdk(),base=require_base(),offline=require_offline(),multiplexed=require_multiplexed(),version=require_version(),integration=require_integration(),applyScopeDataToEvent=require_applyScopeDataToEvent(),prepareEvent=require_prepareEvent(),checkin=require_checkin(),span=require_span2(),hasTracingEnabled=require_hasTracingEnabled(),isSentryRequestUrl=require_isSentryRequestUrl(),handleCallbackErrors=require_handleCallbackErrors(),parameterize=require_parameterize(),spanUtils=require_spanUtils(),getRootSpan=require_getRootSpan(),sdkMetadata=require_sdkMetadata(),constants=require_constants(),metadata=require_metadata2(),requestdata=require_requestdata2(),inboundfilters=require_inboundfilters(),functiontostring=require_functiontostring(),linkederrors=require_linkederrors(),index=require_integrations(),exports$2=require_exports2(),Integrations=index;exports.addTracingExtensions=hubextensions.addTracingExtensions;exports.startIdleTransaction=hubextensions.startIdleTransaction;exports.IdleTransaction=idletransaction.IdleTransaction;exports.TRACING_DEFAULTS=idletransaction.TRACING_DEFAULTS;exports.Span=span$1.Span;exports.Transaction=transaction.Transaction;exports.extractTraceparentData=utils.extractTraceparentData;exports.getActiveTransaction=utils.getActiveTransaction;Object.defineProperty(exports,"SpanStatus",{enumerable:!0,get:()=>spanstatus.SpanStatus});exports.getSpanStatusFromHttpCode=spanstatus.getSpanStatusFromHttpCode;exports.setHttpStatus=spanstatus.setHttpStatus;exports.spanStatusfromHttpCode=spanstatus.spanStatusfromHttpCode;exports.continueTrace=trace.continueTrace;exports.getActiveSpan=trace.getActiveSpan;exports.startActiveSpan=trace.startActiveSpan;exports.startInactiveSpan=trace.startInactiveSpan;exports.startSpan=trace.startSpan;exports.startSpanManual=trace.startSpanManual;exports.trace=trace.trace;exports.getDynamicSamplingContextFromClient=dynamicSamplingContext.getDynamicSamplingContextFromClient;exports.getDynamicSamplingContextFromSpan=dynamicSamplingContext.getDynamicSamplingContextFromSpan;exports.setMeasurement=measurement.setMeasurement;exports.isValidSampleRate=sampling.isValidSampleRate;exports.SEMANTIC_ATTRIBUTE_PROFILE_ID=semanticAttributes.SEMANTIC_ATTRIBUTE_PROFILE_ID;exports.SEMANTIC_ATTRIBUTE_SENTRY_OP=semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_OP;exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=semanticAttributes.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;exports.createEventEnvelope=envelope.createEventEnvelope;exports.createSessionEnvelope=envelope.createSessionEnvelope;exports.addBreadcrumb=exports$1.addBreadcrumb;exports.captureCheckIn=exports$1.captureCheckIn;exports.captureEvent=exports$1.captureEvent;exports.captureException=exports$1.captureException;exports.captureMessage=exports$1.captureMessage;exports.captureSession=exports$1.captureSession;exports.close=exports$1.close;exports.configureScope=exports$1.configureScope;exports.endSession=exports$1.endSession;exports.flush=exports$1.flush;exports.getClient=exports$1.getClient;exports.getCurrentScope=exports$1.getCurrentScope;exports.isInitialized=exports$1.isInitialized;exports.lastEventId=exports$1.lastEventId;exports.setContext=exports$1.setContext;exports.setExtra=exports$1.setExtra;exports.setExtras=exports$1.setExtras;exports.setTag=exports$1.setTag;exports.setTags=exports$1.setTags;exports.setUser=exports$1.setUser;exports.startSession=exports$1.startSession;exports.startTransaction=exports$1.startTransaction;exports.withActiveSpan=exports$1.withActiveSpan;exports.withIsolationScope=exports$1.withIsolationScope;exports.withMonitor=exports$1.withMonitor;exports.withScope=exports$1.withScope;exports.Hub=hub.Hub;exports.ensureHubOnCarrier=hub.ensureHubOnCarrier;exports.getCurrentHub=hub.getCurrentHub;exports.getHubFromCarrier=hub.getHubFromCarrier;exports.getIsolationScope=hub.getIsolationScope;exports.getMainCarrier=hub.getMainCarrier;exports.makeMain=hub.makeMain;exports.runWithAsyncContext=hub.runWithAsyncContext;exports.setAsyncContextStrategy=hub.setAsyncContextStrategy;exports.setHubOnCarrier=hub.setHubOnCarrier;exports.closeSession=session.closeSession;exports.makeSession=session.makeSession;exports.updateSession=session.updateSession;exports.SessionFlusher=sessionflusher.SessionFlusher;exports.Scope=scope.Scope;exports.getGlobalScope=scope.getGlobalScope;exports.setGlobalScope=scope.setGlobalScope;exports.addGlobalEventProcessor=eventProcessors.addGlobalEventProcessor;exports.notifyEventProcessors=eventProcessors.notifyEventProcessors;exports.getEnvelopeEndpointWithUrlEncodedAuth=api.getEnvelopeEndpointWithUrlEncodedAuth;exports.getReportDialogEndpoint=api.getReportDialogEndpoint;exports.BaseClient=baseclient.BaseClient;exports.addEventProcessor=baseclient.addEventProcessor;exports.ServerRuntimeClient=serverRuntimeClient.ServerRuntimeClient;exports.initAndBind=sdk.initAndBind;exports.setCurrentClient=sdk.setCurrentClient;exports.createTransport=base.createTransport;exports.makeOfflineTransport=offline.makeOfflineTransport;exports.makeMultiplexedTransport=multiplexed.makeMultiplexedTransport;exports.SDK_VERSION=version.SDK_VERSION;exports.addIntegration=integration.addIntegration;exports.convertIntegrationFnToClass=integration.convertIntegrationFnToClass;exports.defineIntegration=integration.defineIntegration;exports.getIntegrationsToSetup=integration.getIntegrationsToSetup;exports.applyScopeDataToEvent=applyScopeDataToEvent.applyScopeDataToEvent;exports.mergeScopeData=applyScopeDataToEvent.mergeScopeData;exports.prepareEvent=prepareEvent.prepareEvent;exports.createCheckInEnvelope=checkin.createCheckInEnvelope;exports.createSpanEnvelope=span.createSpanEnvelope;exports.hasTracingEnabled=hasTracingEnabled.hasTracingEnabled;exports.isSentryRequestUrl=isSentryRequestUrl.isSentryRequestUrl;exports.handleCallbackErrors=handleCallbackErrors.handleCallbackErrors;exports.parameterize=parameterize.parameterize;exports.spanIsSampled=spanUtils.spanIsSampled;exports.spanToJSON=spanUtils.spanToJSON;exports.spanToTraceContext=spanUtils.spanToTraceContext;exports.spanToTraceHeader=spanUtils.spanToTraceHeader;exports.getRootSpan=getRootSpan.getRootSpan;exports.applySdkMetadata=sdkMetadata.applySdkMetadata;exports.DEFAULT_ENVIRONMENT=constants.DEFAULT_ENVIRONMENT;exports.ModuleMetadata=metadata.ModuleMetadata;exports.moduleMetadataIntegration=metadata.moduleMetadataIntegration;exports.RequestData=requestdata.RequestData;exports.requestDataIntegration=requestdata.requestDataIntegration;exports.InboundFilters=inboundfilters.InboundFilters;exports.inboundFiltersIntegration=inboundfilters.inboundFiltersIntegration;exports.FunctionToString=functiontostring.FunctionToString;exports.functionToStringIntegration=functiontostring.functionToStringIntegration;exports.LinkedErrors=linkederrors.LinkedErrors;exports.linkedErrorsIntegration=linkederrors.linkedErrorsIntegration;exports.metrics=exports$2.metrics;exports.Integrations=Integrations}});var require_debug_build3=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/debug-build.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEBUG_BUILD=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;exports.DEBUG_BUILD=DEBUG_BUILD}});var require_node_utils=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/utils/node-utils.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});function shouldDisableAutoInstrumentation(getCurrentHub){let clientOptions=_optionalChain([getCurrentHub,"call",_=>_(),"access",_2=>_2.getClient,"call",_3=>_3(),"optionalAccess",_4=>_4.getOptions,"call",_5=>_5()]);return(_optionalChain([clientOptions,"optionalAccess",_6=>_6.instrumenter])||"sentry")!=="sentry"}exports.shouldDisableAutoInstrumentation=shouldDisableAutoInstrumentation}});var require_express=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/express.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),Express=class _Express{static __initStatic(){this.id="Express"}constructor(options={}){this.name=_Express.id,this._router=options.router||options.app,this._methods=(Array.isArray(options.methods)?options.methods:[]).concat("use")}setupOnce(_,getCurrentHub){if(!this._router){debugBuild.DEBUG_BUILD&&utils.logger.error("ExpressIntegration is missing an Express instance");return}if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("Express Integration is skipped because of instrumenter configuration.");return}instrumentMiddlewares(this._router,this._methods),instrumentRouter(this._router)}};Express.__initStatic();function wrap(fn,method){let arity=fn.length;switch(arity){case 2:return function(req,res){let transaction=res.__sentry_transaction;if(transaction){let span=transaction.startChild({description:fn.name,op:`middleware.express.${method}`,origin:"auto.middleware.express"});res.once("finish",()=>{span.end()})}return fn.call(this,req,res)};case 3:return function(req,res,next){let transaction=res.__sentry_transaction,span=_optionalChain([transaction,"optionalAccess",_2=>_2.startChild,"call",_3=>_3({description:fn.name,op:`middleware.express.${method}`,origin:"auto.middleware.express"})]);fn.call(this,req,res,function(...args){_optionalChain([span,"optionalAccess",_4=>_4.end,"call",_5=>_5()]),next.call(this,...args)})};case 4:return function(err,req,res,next){let transaction=res.__sentry_transaction,span=_optionalChain([transaction,"optionalAccess",_6=>_6.startChild,"call",_7=>_7({description:fn.name,op:`middleware.express.${method}`,origin:"auto.middleware.express"})]);fn.call(this,err,req,res,function(...args){_optionalChain([span,"optionalAccess",_8=>_8.end,"call",_9=>_9()]),next.call(this,...args)})};default:throw new Error(`Express middleware takes 2-4 arguments. Got: ${arity}`)}}function wrapMiddlewareArgs(args,method){return args.map(arg=>typeof arg=="function"?wrap(arg,method):Array.isArray(arg)?arg.map(a=>typeof a=="function"?wrap(a,method):a):arg)}function patchMiddleware(router,method){let originalCallback=router[method];return router[method]=function(...args){return originalCallback.call(this,...wrapMiddlewareArgs(args,method))},router}function instrumentMiddlewares(router,methods=[]){methods.forEach(method=>patchMiddleware(router,method))}function instrumentRouter(appOrRouter){let isApp="settings"in appOrRouter;isApp&&appOrRouter._router===void 0&&appOrRouter.lazyrouter&&appOrRouter.lazyrouter();let router=isApp?appOrRouter._router:appOrRouter;if(!router){debugBuild.DEBUG_BUILD&&utils.logger.debug("Cannot instrument router for URL Parameterization (did not find a valid router)."),debugBuild.DEBUG_BUILD&&utils.logger.debug("Routing instrumentation is currently only supported in Express 4.");return}let routerProto=Object.getPrototypeOf(router),originalProcessParams=routerProto.process_params;routerProto.process_params=function(layer,called,req,res,done){req._reconstructedRoute||(req._reconstructedRoute="");let{layerRoutePath,isRegex,isArray,numExtraSegments}=getLayerRoutePathInfo(layer);(layerRoutePath||isRegex||isArray)&&(req._hasParameters=!0);let partialRoute;layerRoutePath?partialRoute=layerRoutePath:partialRoute=preventDuplicateSegments(req.originalUrl,req._reconstructedRoute,layer.path)||"";let finalPartialRoute=partialRoute.split("/").filter(segment=>segment.length>0&&(isRegex||isArray||!segment.includes("*"))).join("/");finalPartialRoute&&finalPartialRoute.length>0&&(req._reconstructedRoute+=`/${finalPartialRoute}${isRegex?"/":""}`);let urlLength=utils.getNumberOfUrlSegments(utils.stripUrlQueryAndFragment(req.originalUrl||""))+numExtraSegments,routeLength=utils.getNumberOfUrlSegments(req._reconstructedRoute);if(urlLength===routeLength){req._hasParameters||req._reconstructedRoute!==req.originalUrl&&(req._reconstructedRoute=req.originalUrl?utils.stripUrlQueryAndFragment(req.originalUrl):req.originalUrl);let transaction=res.__sentry_transaction,attributes=transaction&&core.spanToJSON(transaction).data||{};if(transaction&&attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]!=="custom"){let finalRoute=req._reconstructedRoute||"/",[name,source]=utils.extractPathForTransaction(req,{path:!0,method:!0,customRoute:finalRoute});transaction.updateName(name),transaction.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,source)}}return originalProcessParams.call(this,layer,called,req,res,done)}}var extractOriginalRoute=(path,regexp,keys)=>{if(!path||!regexp||!keys||Object.keys(keys).length===0||!_optionalChain([keys,"access",_10=>_10[0],"optionalAccess",_11=>_11.offset]))return;let orderedKeys=keys.sort((a,b)=>a.offset-b.offset),execResult=new RegExp(regexp,`${regexp.flags}d`).exec(path);if(!execResult||!execResult.indices)return;let[,...paramIndices]=execResult.indices;if(paramIndices.length!==orderedKeys.length)return;let resultPath=path,indexShift=0;return paramIndices.forEach((item,index)=>{if(item){let[startOffset,endOffset]=item,substr1=resultPath.substring(0,startOffset-indexShift),replacement=`:${orderedKeys[index].name}`,substr2=resultPath.substring(endOffset-indexShift);resultPath=substr1+replacement+substr2,indexShift=indexShift+(endOffset-startOffset-replacement.length)}}),resultPath};function getLayerRoutePathInfo(layer){let lrp=_optionalChain([layer,"access",_12=>_12.route,"optionalAccess",_13=>_13.path]),isRegex=utils.isRegExp(lrp),isArray=Array.isArray(lrp);if(!lrp){let[major]=utils.GLOBAL_OBJ.process.versions.node.split(".").map(Number);major>=16&&(lrp=extractOriginalRoute(layer.path,layer.regexp,layer.keys))}if(!lrp)return{isRegex,isArray,numExtraSegments:0};let numExtraSegments=isArray?Math.max(getNumberOfArrayUrlSegments(lrp)-utils.getNumberOfUrlSegments(layer.path||""),0):0;return{layerRoutePath:getLayerRoutePathString(isArray,lrp),isRegex,isArray,numExtraSegments}}function getNumberOfArrayUrlSegments(routesArray){return routesArray.reduce((accNumSegments,currentRoute)=>accNumSegments+utils.getNumberOfUrlSegments(currentRoute.toString()),0)}function getLayerRoutePathString(isArray,lrp){return isArray?lrp.map(r=>r.toString()).join(","):lrp&&lrp.toString()}function preventDuplicateSegments(originalUrl,reconstructedRoute,layerPath){let normalizeURL=utils.stripUrlQueryAndFragment(originalUrl||""),originalUrlSplit=_optionalChain([normalizeURL,"optionalAccess",_14=>_14.split,"call",_15=>_15("/"),"access",_16=>_16.filter,"call",_17=>_17(v=>!!v)]),tempCounter=0,currentOffset=_optionalChain([reconstructedRoute,"optionalAccess",_18=>_18.split,"call",_19=>_19("/"),"access",_20=>_20.filter,"call",_21=>_21(v=>!!v),"access",_22=>_22.length])||0;return _optionalChain([layerPath,"optionalAccess",_23=>_23.split,"call",_24=>_24("/"),"access",_25=>_25.filter,"call",_26=>_26(segment=>_optionalChain([originalUrlSplit,"optionalAccess",_27=>_27[currentOffset+tempCounter]])===segment?(tempCounter+=1,!0):!1),"access",_28=>_28.join,"call",_29=>_29("/")])}exports.Express=Express;exports.extractOriginalRoute=extractOriginalRoute;exports.preventDuplicateSegments=preventDuplicateSegments}});var require_postgres=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/postgres.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),Postgres=class _Postgres{static __initStatic(){this.id="Postgres"}constructor(options={}){this.name=_Postgres.id,this._usePgNative=!!options.usePgNative,this._module=options.module}loadDependency(){return this._module=this._module||utils.loadModule("pg")}setupOnce(_,getCurrentHub){if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("Postgres Integration is skipped because of instrumenter configuration.");return}let pkg=this.loadDependency();if(!pkg){debugBuild.DEBUG_BUILD&&utils.logger.error("Postgres Integration was unable to require `pg` package.");return}let Client=this._usePgNative?_optionalChain([pkg,"access",_2=>_2.native,"optionalAccess",_3=>_3.Client]):pkg.Client;if(!Client){debugBuild.DEBUG_BUILD&&utils.logger.error("Postgres Integration was unable to access 'pg-native' bindings.");return}utils.fill(Client.prototype,"query",function(orig){return function(config,values,callback){let parentSpan=getCurrentHub().getScope().getSpan(),data={"db.system":"postgresql"};try{this.database&&(data["db.name"]=this.database),this.host&&(data["server.address"]=this.host),this.port&&(data["server.port"]=this.port),this.user&&(data["db.user"]=this.user)}catch{}let span=_optionalChain([parentSpan,"optionalAccess",_4=>_4.startChild,"call",_5=>_5({description:typeof config=="string"?config:config.text,op:"db",origin:"auto.db.postgres",data})]);if(typeof callback=="function")return orig.call(this,config,values,function(err,result){_optionalChain([span,"optionalAccess",_6=>_6.end,"call",_7=>_7()]),callback(err,result)});if(typeof values=="function")return orig.call(this,config,function(err,result){_optionalChain([span,"optionalAccess",_8=>_8.end,"call",_9=>_9()]),values(err,result)});let rv=typeof values<"u"?orig.call(this,config,values):orig.call(this,config);return utils.isThenable(rv)?rv.then(res=>(_optionalChain([span,"optionalAccess",_10=>_10.end,"call",_11=>_11()]),res)):(_optionalChain([span,"optionalAccess",_12=>_12.end,"call",_13=>_13()]),rv)}})}};Postgres.__initStatic();exports.Postgres=Postgres}});var require_mysql=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mysql.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),Mysql=class _Mysql{static __initStatic(){this.id="Mysql"}constructor(){this.name=_Mysql.id}loadDependency(){return this._module=this._module||utils.loadModule("mysql/lib/Connection.js")}setupOnce(_,getCurrentHub){if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("Mysql Integration is skipped because of instrumenter configuration.");return}let pkg=this.loadDependency();if(!pkg){debugBuild.DEBUG_BUILD&&utils.logger.error("Mysql Integration was unable to require `mysql` package.");return}let mySqlConfig;try{pkg.prototype.connect=new Proxy(pkg.prototype.connect,{apply(wrappingTarget,thisArg,args){return mySqlConfig||(mySqlConfig=thisArg.config),wrappingTarget.apply(thisArg,args)}})}catch{debugBuild.DEBUG_BUILD&&utils.logger.error("Mysql Integration was unable to instrument `mysql` config.")}function spanDataFromConfig(){return mySqlConfig?{"server.address":mySqlConfig.host,"server.port":mySqlConfig.port,"db.user":mySqlConfig.user}:{}}function finishSpan(span){if(!span)return;let data=spanDataFromConfig();Object.keys(data).forEach(key=>{span.setAttribute(key,data[key])}),span.end()}utils.fill(pkg,"createQuery",function(orig){return function(options,values,callback){let parentSpan=getCurrentHub().getScope().getSpan(),span=_optionalChain([parentSpan,"optionalAccess",_2=>_2.startChild,"call",_3=>_3({description:typeof options=="string"?options:options.sql,op:"db",origin:"auto.db.mysql",data:{"db.system":"mysql"}})]);if(typeof callback=="function")return orig.call(this,options,values,function(err,result,fields){finishSpan(span),callback(err,result,fields)});if(typeof values=="function")return orig.call(this,options,function(err,result,fields){finishSpan(span),values(err,result,fields)});let query=orig.call(this,options,values);return query.on("end",()=>{finishSpan(span)}),query}})}};Mysql.__initStatic();exports.Mysql=Mysql}});var require_mongo=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/mongo.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),OPERATIONS=["aggregate","bulkWrite","countDocuments","createIndex","createIndexes","deleteMany","deleteOne","distinct","drop","dropIndex","dropIndexes","estimatedDocumentCount","find","findOne","findOneAndDelete","findOneAndReplace","findOneAndUpdate","indexes","indexExists","indexInformation","initializeOrderedBulkOp","insertMany","insertOne","isCapped","mapReduce","options","parallelCollectionScan","rename","replaceOne","stats","updateMany","updateOne"],OPERATION_SIGNATURES={bulkWrite:["operations"],countDocuments:["query"],createIndex:["fieldOrSpec"],createIndexes:["indexSpecs"],deleteMany:["filter"],deleteOne:["filter"],distinct:["key","query"],dropIndex:["indexName"],find:["query"],findOne:["query"],findOneAndDelete:["filter"],findOneAndReplace:["filter","replacement"],findOneAndUpdate:["filter","update"],indexExists:["indexes"],insertMany:["docs"],insertOne:["doc"],mapReduce:["map","reduce"],rename:["newName"],replaceOne:["filter","doc"],updateMany:["filter","update"],updateOne:["filter","update"]};function isCursor(maybeCursor){return maybeCursor&&typeof maybeCursor=="object"&&maybeCursor.once&&typeof maybeCursor.once=="function"}var Mongo=class _Mongo{static __initStatic(){this.id="Mongo"}constructor(options={}){this.name=_Mongo.id,this._operations=Array.isArray(options.operations)?options.operations:OPERATIONS,this._describeOperations="describeOperations"in options?options.describeOperations:!0,this._useMongoose=!!options.useMongoose}loadDependency(){let moduleName=this._useMongoose?"mongoose":"mongodb";return this._module=this._module||utils.loadModule(moduleName)}setupOnce(_,getCurrentHub){if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("Mongo Integration is skipped because of instrumenter configuration.");return}let pkg=this.loadDependency();if(!pkg){let moduleName=this._useMongoose?"mongoose":"mongodb";debugBuild.DEBUG_BUILD&&utils.logger.error(`Mongo Integration was unable to require \`${moduleName}\` package.`);return}this._instrumentOperations(pkg.Collection,this._operations,getCurrentHub)}_instrumentOperations(collection,operations,getCurrentHub){operations.forEach(operation=>this._patchOperation(collection,operation,getCurrentHub))}_patchOperation(collection,operation,getCurrentHub){if(!(operation in collection.prototype))return;let getSpanContext=this._getSpanContextFromOperationArguments.bind(this);utils.fill(collection.prototype,operation,function(orig){return function(...args){let lastArg=args[args.length-1],hub=getCurrentHub(),scope=hub.getScope(),client=hub.getClient(),parentSpan=scope.getSpan(),sendDefaultPii=_optionalChain([client,"optionalAccess",_2=>_2.getOptions,"call",_3=>_3(),"access",_4=>_4.sendDefaultPii]);if(typeof lastArg!="function"||operation==="mapReduce"&&args.length===2){let span2=_optionalChain([parentSpan,"optionalAccess",_5=>_5.startChild,"call",_6=>_6(getSpanContext(this,operation,args,sendDefaultPii))]),maybePromiseOrCursor=orig.call(this,...args);if(utils.isThenable(maybePromiseOrCursor))return maybePromiseOrCursor.then(res=>(_optionalChain([span2,"optionalAccess",_7=>_7.end,"call",_8=>_8()]),res));if(isCursor(maybePromiseOrCursor)){let cursor=maybePromiseOrCursor;try{cursor.once("close",()=>{_optionalChain([span2,"optionalAccess",_9=>_9.end,"call",_10=>_10()])})}catch{_optionalChain([span2,"optionalAccess",_11=>_11.end,"call",_12=>_12()])}return cursor}else return _optionalChain([span2,"optionalAccess",_13=>_13.end,"call",_14=>_14()]),maybePromiseOrCursor}let span=_optionalChain([parentSpan,"optionalAccess",_15=>_15.startChild,"call",_16=>_16(getSpanContext(this,operation,args.slice(0,-1)))]);return orig.call(this,...args.slice(0,-1),function(err,result){_optionalChain([span,"optionalAccess",_17=>_17.end,"call",_18=>_18()]),lastArg(err,result)})}})}_getSpanContextFromOperationArguments(collection,operation,args,sendDefaultPii=!1){let data={"db.system":"mongodb","db.name":collection.dbName,"db.operation":operation,"db.mongodb.collection":collection.collectionName},spanContext={op:"db",origin:"auto.db.mongo",description:operation,data},signature=OPERATION_SIGNATURES[operation],shouldDescribe=Array.isArray(this._describeOperations)?this._describeOperations.includes(operation):this._describeOperations;if(!signature||!shouldDescribe||!sendDefaultPii)return spanContext;try{if(operation==="mapReduce"){let[map,reduce]=args;data[signature[0]]=typeof map=="string"?map:map.name||"<anonymous>",data[signature[1]]=typeof reduce=="string"?reduce:reduce.name||"<anonymous>"}else for(let i=0;i<signature.length;i++)data[`db.mongodb.${signature[i]}`]=JSON.stringify(args[i])}catch{}return spanContext}};Mongo.__initStatic();exports.Mongo=Mongo}});var require_prisma=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/prisma.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils();function isValidPrismaClient(possibleClient){return!!possibleClient&&!!possibleClient.$use}var Prisma=class _Prisma{static __initStatic(){this.id="Prisma"}constructor(options={}){if(this.name=_Prisma.id,isValidPrismaClient(options.client)&&!options.client._sentryInstrumented){utils.addNonEnumerableProperty(options.client,"_sentryInstrumented",!0);let clientData={};try{let engineConfig=options.client._engineConfig;if(engineConfig){let{activeProvider,clientVersion}=engineConfig;activeProvider&&(clientData["db.system"]=activeProvider),clientVersion&&(clientData["db.prisma.version"]=clientVersion)}}catch{}options.client.$use((params,next)=>{if(nodeUtils.shouldDisableAutoInstrumentation(core.getCurrentHub))return next(params);let action=params.action,model=params.model;return core.startSpan({name:model?`${model} ${action}`:action,onlyIfParent:!0,op:"db.prisma",attributes:{[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.db.prisma"},data:{...clientData,"db.operation":action}},()=>next(params))})}else debugBuild.DEBUG_BUILD&&utils.logger.warn("Unsupported Prisma client provided to PrismaIntegration. Provided client:",options.client)}setupOnce(){}};Prisma.__initStatic();exports.Prisma=Prisma}});var require_graphql=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/graphql.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),GraphQL=class _GraphQL{static __initStatic(){this.id="GraphQL"}constructor(){this.name=_GraphQL.id}loadDependency(){return this._module=this._module||utils.loadModule("graphql/execution/execute.js")}setupOnce(_,getCurrentHub){if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("GraphQL Integration is skipped because of instrumenter configuration.");return}let pkg=this.loadDependency();if(!pkg){debugBuild.DEBUG_BUILD&&utils.logger.error("GraphQL Integration was unable to require graphql/execution package.");return}utils.fill(pkg,"execute",function(orig){return function(...args){let scope=getCurrentHub().getScope(),parentSpan=scope.getSpan(),span=_optionalChain([parentSpan,"optionalAccess",_2=>_2.startChild,"call",_3=>_3({description:"execute",op:"graphql.execute",origin:"auto.graphql.graphql"})]);_optionalChain([scope,"optionalAccess",_4=>_4.setSpan,"call",_5=>_5(span)]);let rv=orig.call(this,...args);return utils.isThenable(rv)?rv.then(res=>(_optionalChain([span,"optionalAccess",_6=>_6.end,"call",_7=>_7()]),_optionalChain([scope,"optionalAccess",_8=>_8.setSpan,"call",_9=>_9(parentSpan)]),res)):(_optionalChain([span,"optionalAccess",_10=>_10.end,"call",_11=>_11()]),_optionalChain([scope,"optionalAccess",_12=>_12.setSpan,"call",_13=>_13(parentSpan)]),rv)}})}};GraphQL.__initStatic();exports.GraphQL=GraphQL}});var require_apollo=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/apollo.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),nodeUtils=require_node_utils(),Apollo=class _Apollo{static __initStatic(){this.id="Apollo"}constructor(options={useNestjs:!1}){this.name=_Apollo.id,this._useNest=!!options.useNestjs}loadDependency(){return this._useNest?this._module=this._module||utils.loadModule("@nestjs/graphql"):this._module=this._module||utils.loadModule("apollo-server-core"),this._module}setupOnce(_,getCurrentHub){if(nodeUtils.shouldDisableAutoInstrumentation(getCurrentHub)){debugBuild.DEBUG_BUILD&&utils.logger.log("Apollo Integration is skipped because of instrumenter configuration.");return}if(this._useNest){let pkg=this.loadDependency();if(!pkg){debugBuild.DEBUG_BUILD&&utils.logger.error("Apollo-NestJS Integration was unable to require @nestjs/graphql package.");return}utils.fill(pkg.GraphQLFactory.prototype,"mergeWithSchema",function(orig){return function(...args){return utils.fill(this.resolversExplorerService,"explore",function(orig2){return function(){let resolvers=utils.arrayify(orig2.call(this));return instrumentResolvers(resolvers,getCurrentHub)}}),orig.call(this,...args)}})}else{let pkg=this.loadDependency();if(!pkg){debugBuild.DEBUG_BUILD&&utils.logger.error("Apollo Integration was unable to require apollo-server-core package.");return}utils.fill(pkg.ApolloServerBase.prototype,"constructSchema",function(orig){return function(){if(!this.config.resolvers)return debugBuild.DEBUG_BUILD&&(this.config.schema?(utils.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.If you are using NestJS with Apollo, please use `Sentry.Integrations.Apollo({ useNestjs: true })` instead."),utils.logger.warn()):this.config.modules&&utils.logger.warn("Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property."),utils.logger.error("Skipping tracing as no resolvers found on the `ApolloServer` instance.")),orig.call(this);let resolvers=utils.arrayify(this.config.resolvers);return this.config.resolvers=instrumentResolvers(resolvers,getCurrentHub),orig.call(this)}})}}};Apollo.__initStatic();function instrumentResolvers(resolvers,getCurrentHub){return resolvers.map(model=>(Object.keys(model).forEach(resolverGroupName=>{Object.keys(model[resolverGroupName]).forEach(resolverName=>{typeof model[resolverGroupName][resolverName]=="function"&&wrapResolver(model,resolverGroupName,resolverName,getCurrentHub)})}),model))}function wrapResolver(model,resolverGroupName,resolverName,getCurrentHub){utils.fill(model[resolverGroupName],resolverName,function(orig){return function(...args){let parentSpan=getCurrentHub().getScope().getSpan(),span=_optionalChain([parentSpan,"optionalAccess",_2=>_2.startChild,"call",_3=>_3({description:`${resolverGroupName}.${resolverName}`,op:"graphql.resolve",origin:"auto.graphql.apollo"})]),rv=orig.call(this,...args);return utils.isThenable(rv)?rv.then(res=>(_optionalChain([span,"optionalAccess",_4=>_4.end,"call",_5=>_5()]),res)):(_optionalChain([span,"optionalAccess",_6=>_6.end,"call",_7=>_7()]),rv)}})}exports.Apollo=Apollo}});var require_lazy=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/node/integrations/lazy.js"(exports,module){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),lazyLoadedNodePerformanceMonitoringIntegrations=[()=>{let integration=utils.dynamicRequire(module,"./apollo");return new integration.Apollo},()=>{let integration=utils.dynamicRequire(module,"./apollo");return new integration.Apollo({useNestjs:!0})},()=>{let integration=utils.dynamicRequire(module,"./graphql");return new integration.GraphQL},()=>{let integration=utils.dynamicRequire(module,"./mongo");return new integration.Mongo},()=>{let integration=utils.dynamicRequire(module,"./mongo");return new integration.Mongo({mongoose:!0})},()=>{let integration=utils.dynamicRequire(module,"./mysql");return new integration.Mysql},()=>{let integration=utils.dynamicRequire(module,"./postgres");return new integration.Postgres}];exports.lazyLoadedNodePerformanceMonitoringIntegrations=lazyLoadedNodePerformanceMonitoringIntegrations}});var require_types=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/types.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),WINDOW=utils.GLOBAL_OBJ;exports.WINDOW=WINDOW}});var require_backgroundtab=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/backgroundtab.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),types=require_types();function registerBackgroundTabDetection(){types.WINDOW.document?types.WINDOW.document.addEventListener("visibilitychange",()=>{let activeTransaction=core.getActiveTransaction();if(types.WINDOW.document.hidden&&activeTransaction){let statusType="cancelled",{op,status}=core.spanToJSON(activeTransaction);debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${op}`),status||activeTransaction.setStatus(statusType),activeTransaction.setTag("visibilitychange","document.hidden"),activeTransaction.end()}}):debugBuild.DEBUG_BUILD&&utils.logger.warn("[Tracing] Could not set up background tab detection due to lack of global document")}exports.registerBackgroundTabDetection=registerBackgroundTabDetection}});var require_bindReporter=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/bindReporter.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var bindReporter=(callback,metric,reportAllChanges)=>{let prevValue,delta;return forceReport=>{metric.value>=0&&(forceReport||reportAllChanges)&&(delta=metric.value-(prevValue||0),(delta||prevValue===void 0)&&(prevValue=metric.value,metric.delta=delta,callback(metric)))}};exports.bindReporter=bindReporter}});var require_generateUniqueID=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/generateUniqueID.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var generateUniqueID=()=>`v3-${Date.now()}-${Math.floor(Math.random()*(9e12-1))+1e12}`;exports.generateUniqueID=generateUniqueID}});var require_getNavigationEntry=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getNavigationEntry.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),getNavigationEntryFromPerformanceTiming=()=>{let timing=types.WINDOW.performance.timing,type=types.WINDOW.performance.navigation.type,navigationEntry={entryType:"navigation",startTime:0,type:type==2?"back_forward":type===1?"reload":"navigate"};for(let key in timing)key!=="navigationStart"&&key!=="toJSON"&&(navigationEntry[key]=Math.max(timing[key]-timing.navigationStart,0));return navigationEntry},getNavigationEntry=()=>types.WINDOW.__WEB_VITALS_POLYFILL__?types.WINDOW.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||getNavigationEntryFromPerformanceTiming()):types.WINDOW.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];exports.getNavigationEntry=getNavigationEntry}});var require_getActivationStart=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getActivationStart.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var getNavigationEntry=require_getNavigationEntry(),getActivationStart=()=>{let navEntry=getNavigationEntry.getNavigationEntry();return navEntry&&navEntry.activationStart||0};exports.getActivationStart=getActivationStart}});var require_initMetric=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/initMetric.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),generateUniqueID=require_generateUniqueID(),getActivationStart=require_getActivationStart(),getNavigationEntry=require_getNavigationEntry(),initMetric=(name,value)=>{let navEntry=getNavigationEntry.getNavigationEntry(),navigationType="navigate";return navEntry&&(types.WINDOW.document&&types.WINDOW.document.prerendering||getActivationStart.getActivationStart()>0?navigationType="prerender":navigationType=navEntry.type.replace(/_/g,"-")),{name,value:typeof value>"u"?-1:value,rating:"good",delta:0,entries:[],id:generateUniqueID.generateUniqueID(),navigationType}};exports.initMetric=initMetric}});var require_observe=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/observe.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var observe=(type,callback,opts)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(type)){let po=new PerformanceObserver(list=>{callback(list.getEntries())});return po.observe(Object.assign({type,buffered:!0},opts||{})),po}}catch{}};exports.observe=observe}});var require_onHidden=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/onHidden.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),onHidden=(cb,once)=>{let onHiddenOrPageHide=event=>{(event.type==="pagehide"||types.WINDOW.document.visibilityState==="hidden")&&(cb(event),once&&(removeEventListener("visibilitychange",onHiddenOrPageHide,!0),removeEventListener("pagehide",onHiddenOrPageHide,!0)))};types.WINDOW.document&&(addEventListener("visibilitychange",onHiddenOrPageHide,!0),addEventListener("pagehide",onHiddenOrPageHide,!0))};exports.onHidden=onHidden}});var require_getCLS=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getCLS.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var bindReporter=require_bindReporter(),initMetric=require_initMetric(),observe=require_observe(),onHidden=require_onHidden(),onCLS=(onReport,options={})=>{let metric=initMetric.initMetric("CLS",0),report,sessionValue=0,sessionEntries=[],handleEntries=entries=>{entries.forEach(entry=>{if(!entry.hadRecentInput){let firstSessionEntry=sessionEntries[0],lastSessionEntry=sessionEntries[sessionEntries.length-1];sessionValue&&sessionEntries.length!==0&&entry.startTime-lastSessionEntry.startTime<1e3&&entry.startTime-firstSessionEntry.startTime<5e3?(sessionValue+=entry.value,sessionEntries.push(entry)):(sessionValue=entry.value,sessionEntries=[entry]),sessionValue>metric.value&&(metric.value=sessionValue,metric.entries=sessionEntries,report&&report())}})},po=observe.observe("layout-shift",handleEntries);if(po){report=bindReporter.bindReporter(onReport,metric,options.reportAllChanges);let stopListening=()=>{handleEntries(po.takeRecords()),report(!0)};return onHidden.onHidden(stopListening),stopListening}};exports.onCLS=onCLS}});var require_getVisibilityWatcher=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/getVisibilityWatcher.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),onHidden=require_onHidden(),firstHiddenTime=-1,initHiddenTime=()=>{types.WINDOW.document&&types.WINDOW.document.visibilityState&&(firstHiddenTime=types.WINDOW.document.visibilityState==="hidden"&&!types.WINDOW.document.prerendering?0:1/0)},trackChanges=()=>{onHidden.onHidden(({timeStamp})=>{firstHiddenTime=timeStamp},!0)},getVisibilityWatcher=()=>(firstHiddenTime<0&&(initHiddenTime(),trackChanges()),{get firstHiddenTime(){return firstHiddenTime}});exports.getVisibilityWatcher=getVisibilityWatcher}});var require_getFID=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getFID.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var bindReporter=require_bindReporter(),getVisibilityWatcher=require_getVisibilityWatcher(),initMetric=require_initMetric(),observe=require_observe(),onHidden=require_onHidden(),onFID=onReport=>{let visibilityWatcher=getVisibilityWatcher.getVisibilityWatcher(),metric=initMetric.initMetric("FID"),report,handleEntry=entry=>{entry.startTime<visibilityWatcher.firstHiddenTime&&(metric.value=entry.processingStart-entry.startTime,metric.entries.push(entry),report(!0))},handleEntries=entries=>{entries.forEach(handleEntry)},po=observe.observe("first-input",handleEntries);report=bindReporter.bindReporter(onReport,metric),po&&onHidden.onHidden(()=>{handleEntries(po.takeRecords()),po.disconnect()},!0)};exports.onFID=onFID}});var require_interactionCountPolyfill=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var observe=require_observe(),interactionCountEstimate=0,minKnownInteractionId=1/0,maxKnownInteractionId=0,updateEstimate=entries=>{entries.forEach(e=>{e.interactionId&&(minKnownInteractionId=Math.min(minKnownInteractionId,e.interactionId),maxKnownInteractionId=Math.max(maxKnownInteractionId,e.interactionId),interactionCountEstimate=maxKnownInteractionId?(maxKnownInteractionId-minKnownInteractionId)/7+1:0)})},po,getInteractionCount=()=>po?interactionCountEstimate:performance.interactionCount||0,initInteractionCountPolyfill=()=>{"interactionCount"in performance||po||(po=observe.observe("event",updateEstimate,{type:"event",buffered:!0,durationThreshold:0}))};exports.getInteractionCount=getInteractionCount;exports.initInteractionCountPolyfill=initInteractionCountPolyfill}});var require_getINP=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getINP.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var bindReporter=require_bindReporter(),initMetric=require_initMetric(),observe=require_observe(),onHidden=require_onHidden(),interactionCountPolyfill=require_interactionCountPolyfill(),getInteractionCountForNavigation=()=>interactionCountPolyfill.getInteractionCount(),MAX_INTERACTIONS_TO_CONSIDER=10,longestInteractionList=[],longestInteractionMap={},processEntry=entry=>{let minLongestInteraction=longestInteractionList[longestInteractionList.length-1],existingInteraction=longestInteractionMap[entry.interactionId];if(existingInteraction||longestInteractionList.length<MAX_INTERACTIONS_TO_CONSIDER||entry.duration>minLongestInteraction.latency){if(existingInteraction)existingInteraction.entries.push(entry),existingInteraction.latency=Math.max(existingInteraction.latency,entry.duration);else{let interaction={id:entry.interactionId,latency:entry.duration,entries:[entry]};longestInteractionMap[interaction.id]=interaction,longestInteractionList.push(interaction)}longestInteractionList.sort((a,b)=>b.latency-a.latency),longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i=>{delete longestInteractionMap[i.id]})}},estimateP98LongestInteraction=()=>{let candidateInteractionIndex=Math.min(longestInteractionList.length-1,Math.floor(getInteractionCountForNavigation()/50));return longestInteractionList[candidateInteractionIndex]},onINP=(onReport,opts)=>{opts=opts||{},interactionCountPolyfill.initInteractionCountPolyfill();let metric=initMetric.initMetric("INP"),report,handleEntries=entries=>{entries.forEach(entry=>{entry.interactionId&&processEntry(entry),entry.entryType==="first-input"&&!longestInteractionList.some(interaction=>interaction.entries.some(prevEntry=>entry.duration===prevEntry.duration&&entry.startTime===prevEntry.startTime))&&processEntry(entry)});let inp=estimateP98LongestInteraction();inp&&inp.latency!==metric.value&&(metric.value=inp.latency,metric.entries=inp.entries,report())},po=observe.observe("event",handleEntries,{durationThreshold:opts.durationThreshold||40});report=bindReporter.bindReporter(onReport,metric,opts.reportAllChanges),po&&(po.observe({type:"first-input",buffered:!0}),onHidden.onHidden(()=>{handleEntries(po.takeRecords()),metric.value<0&&getInteractionCountForNavigation()>0&&(metric.value=0,metric.entries=[]),report(!0)}))};exports.onINP=onINP}});var require_getLCP=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/getLCP.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),bindReporter=require_bindReporter(),getActivationStart=require_getActivationStart(),getVisibilityWatcher=require_getVisibilityWatcher(),initMetric=require_initMetric(),observe=require_observe(),onHidden=require_onHidden(),reportedMetricIDs={},onLCP=onReport=>{let visibilityWatcher=getVisibilityWatcher.getVisibilityWatcher(),metric=initMetric.initMetric("LCP"),report,handleEntries=entries=>{let lastEntry=entries[entries.length-1];if(lastEntry){let value=Math.max(lastEntry.startTime-getActivationStart.getActivationStart(),0);value<visibilityWatcher.firstHiddenTime&&(metric.value=value,metric.entries=[lastEntry],report())}},po=observe.observe("largest-contentful-paint",handleEntries);if(po){report=bindReporter.bindReporter(onReport,metric);let stopListening=()=>{reportedMetricIDs[metric.id]||(handleEntries(po.takeRecords()),po.disconnect(),reportedMetricIDs[metric.id]=!0,report(!0))};return["keydown","click"].forEach(type=>{types.WINDOW.document&&addEventListener(type,stopListening,{once:!0,capture:!0})}),onHidden.onHidden(stopListening,!0),stopListening}};exports.onLCP=onLCP}});var require_onTTFB=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/web-vitals/onTTFB.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var types=require_types(),bindReporter=require_bindReporter(),getActivationStart=require_getActivationStart(),getNavigationEntry=require_getNavigationEntry(),initMetric=require_initMetric(),whenReady=callback=>{types.WINDOW.document&&(types.WINDOW.document.prerendering?addEventListener("prerenderingchange",()=>whenReady(callback),!0):types.WINDOW.document.readyState!=="complete"?addEventListener("load",()=>whenReady(callback),!0):setTimeout(callback,0))},onTTFB=(onReport,opts)=>{opts=opts||{};let metric=initMetric.initMetric("TTFB"),report=bindReporter.bindReporter(onReport,metric,opts.reportAllChanges);whenReady(()=>{let navEntry=getNavigationEntry.getNavigationEntry();if(navEntry){if(metric.value=Math.max(navEntry.responseStart-getActivationStart.getActivationStart(),0),metric.value<0||metric.value>performance.now())return;metric.entries=[navEntry],report(!0)}})};exports.onTTFB=onTTFB}});var require_instrument2=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/instrument.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),getCLS=require_getCLS(),getFID=require_getFID(),getINP=require_getINP(),getLCP=require_getLCP(),observe=require_observe(),onTTFB=require_onTTFB(),handlers={},instrumented={},_previousCls,_previousFid,_previousLcp,_previousTtfb,_previousInp;function addClsInstrumentationHandler(callback,stopOnCallback=!1){return addMetricObserver("cls",callback,instrumentCls,_previousCls,stopOnCallback)}function addLcpInstrumentationHandler(callback,stopOnCallback=!1){return addMetricObserver("lcp",callback,instrumentLcp,_previousLcp,stopOnCallback)}function addTtfbInstrumentationHandler(callback){return addMetricObserver("ttfb",callback,instrumentTtfb,_previousTtfb)}function addFidInstrumentationHandler(callback){return addMetricObserver("fid",callback,instrumentFid,_previousFid)}function addInpInstrumentationHandler(callback){return addMetricObserver("inp",callback,instrumentInp,_previousInp)}function addPerformanceInstrumentationHandler(type,callback){return addHandler(type,callback),instrumented[type]||(instrumentPerformanceObserver(type),instrumented[type]=!0),getCleanupCallback(type,callback)}function triggerHandlers(type,data){let typeHandlers=handlers[type];if(!(!typeHandlers||!typeHandlers.length))for(let handler of typeHandlers)try{handler(data)}catch(e){debugBuild.DEBUG_BUILD&&utils.logger.error(`Error while triggering instrumentation handler.
|
|
28
|
+
Type: ${type}
|
|
29
|
+
Name: ${utils.getFunctionName(handler)}
|
|
30
|
+
Error:`,e)}}function instrumentCls(){return getCLS.onCLS(metric=>{triggerHandlers("cls",{metric}),_previousCls=metric},{reportAllChanges:!0})}function instrumentFid(){return getFID.onFID(metric=>{triggerHandlers("fid",{metric}),_previousFid=metric})}function instrumentLcp(){return getLCP.onLCP(metric=>{triggerHandlers("lcp",{metric}),_previousLcp=metric})}function instrumentTtfb(){return onTTFB.onTTFB(metric=>{triggerHandlers("ttfb",{metric}),_previousTtfb=metric})}function instrumentInp(){return getINP.onINP(metric=>{triggerHandlers("inp",{metric}),_previousInp=metric})}function addMetricObserver(type,callback,instrumentFn,previousValue,stopOnCallback=!1){addHandler(type,callback);let stopListening;return instrumented[type]||(stopListening=instrumentFn(),instrumented[type]=!0),previousValue&&callback({metric:previousValue}),getCleanupCallback(type,callback,stopOnCallback?stopListening:void 0)}function instrumentPerformanceObserver(type){let options={};type==="event"&&(options.durationThreshold=0),observe.observe(type,entries=>{triggerHandlers(type,{entries})},options)}function addHandler(type,handler){handlers[type]=handlers[type]||[],handlers[type].push(handler)}function getCleanupCallback(type,callback,stopListening){return()=>{stopListening&&stopListening();let typeHandlers=handlers[type];if(!typeHandlers)return;let index=typeHandlers.indexOf(callback);index!==-1&&typeHandlers.splice(index,1)}}exports.addClsInstrumentationHandler=addClsInstrumentationHandler;exports.addFidInstrumentationHandler=addFidInstrumentationHandler;exports.addInpInstrumentationHandler=addInpInstrumentationHandler;exports.addLcpInstrumentationHandler=addLcpInstrumentationHandler;exports.addPerformanceInstrumentationHandler=addPerformanceInstrumentationHandler;exports.addTtfbInstrumentationHandler=addTtfbInstrumentationHandler}});var require_utils3=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/utils.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function isMeasurementValue(value){return typeof value=="number"&&isFinite(value)}function _startChild(transaction,{startTimestamp,...ctx}){return startTimestamp&&transaction.startTimestamp>startTimestamp&&(transaction.startTimestamp=startTimestamp),transaction.startChild({startTimestamp,...ctx})}exports._startChild=_startChild;exports.isMeasurementValue=isMeasurementValue}});var require_metrics=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/metrics/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),instrument=require_instrument2(),types=require_types(),getVisibilityWatcher=require_getVisibilityWatcher(),utils$1=require_utils3(),getNavigationEntry=require_getNavigationEntry(),MAX_INT_AS_BYTES=2147483647;function msToSec(time){return time/1e3}function getBrowserPerformanceAPI(){return types.WINDOW&&types.WINDOW.addEventListener&&types.WINDOW.performance}var _performanceCursor=0,_measurements={},_lcpEntry,_clsEntry;function startTrackingWebVitals(){let performance2=getBrowserPerformanceAPI();if(performance2&&utils.browserPerformanceTimeOrigin){performance2.mark&&types.WINDOW.performance.mark("sentry-tracing-init");let fidCallback=_trackFID(),clsCallback=_trackCLS(),lcpCallback=_trackLCP(),ttfbCallback=_trackTtfb();return()=>{fidCallback(),clsCallback(),lcpCallback(),ttfbCallback()}}return()=>{}}function startTrackingLongTasks(){instrument.addPerformanceInstrumentationHandler("longtask",({entries})=>{for(let entry of entries){let transaction=core.getActiveTransaction();if(!transaction)return;let startTime=msToSec(utils.browserPerformanceTimeOrigin+entry.startTime),duration=msToSec(entry.duration);transaction.startChild({description:"Main UI thread blocked",op:"ui.long-task",origin:"auto.ui.browser.metrics",startTimestamp:startTime,endTimestamp:startTime+duration})}})}function startTrackingInteractions(){instrument.addPerformanceInstrumentationHandler("event",({entries})=>{for(let entry of entries){let transaction=core.getActiveTransaction();if(!transaction)return;if(entry.name==="click"){let startTime=msToSec(utils.browserPerformanceTimeOrigin+entry.startTime),duration=msToSec(entry.duration),span={description:utils.htmlTreeAsString(entry.target),op:`ui.interaction.${entry.name}`,origin:"auto.ui.browser.metrics",startTimestamp:startTime,endTimestamp:startTime+duration},componentName=utils.getComponentName(entry.target);componentName&&(span.attributes={"ui.component_name":componentName}),transaction.startChild(span)}}})}function startTrackingINP(interactionIdtoRouteNameMapping,interactionsSampleRate){if(getBrowserPerformanceAPI()&&utils.browserPerformanceTimeOrigin){let inpCallback=_trackINP(interactionIdtoRouteNameMapping,interactionsSampleRate);return()=>{inpCallback()}}return()=>{}}function _trackCLS(){return instrument.addClsInstrumentationHandler(({metric})=>{let entry=metric.entries[metric.entries.length-1];entry&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding CLS"),_measurements.cls={value:metric.value,unit:""},_clsEntry=entry)},!0)}function _trackLCP(){return instrument.addLcpInstrumentationHandler(({metric})=>{let entry=metric.entries[metric.entries.length-1];entry&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding LCP"),_measurements.lcp={value:metric.value,unit:"millisecond"},_lcpEntry=entry)},!0)}function _trackFID(){return instrument.addFidInstrumentationHandler(({metric})=>{let entry=metric.entries[metric.entries.length-1];if(!entry)return;let timeOrigin=msToSec(utils.browserPerformanceTimeOrigin),startTime=msToSec(entry.startTime);debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding FID"),_measurements.fid={value:metric.value,unit:"millisecond"},_measurements["mark.fid"]={value:timeOrigin+startTime,unit:"second"}})}function _trackTtfb(){return instrument.addTtfbInstrumentationHandler(({metric})=>{metric.entries[metric.entries.length-1]&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding TTFB"),_measurements.ttfb={value:metric.value,unit:"millisecond"})})}var INP_ENTRY_MAP={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};function _trackINP(interactionIdToRouteNameMapping,interactionsSampleRate){return instrument.addInpInstrumentationHandler(({metric})=>{if(metric.value===void 0)return;let entry=metric.entries.find(entry2=>entry2.duration===metric.value&&INP_ENTRY_MAP[entry2.name]!==void 0),client=core.getClient();if(!entry||!client)return;let interactionType=INP_ENTRY_MAP[entry.name],options=client.getOptions(),startTime=msToSec(utils.browserPerformanceTimeOrigin+entry.startTime),duration=msToSec(metric.value),interaction=entry.interactionId!==void 0?interactionIdToRouteNameMapping[entry.interactionId]:void 0;if(interaction===void 0)return;let{routeName,parentContext,activeTransaction,user,replayId}=interaction,userDisplay=user!==void 0?user.email||user.id||user.ip_address:void 0,profileId=activeTransaction!==void 0?activeTransaction.getProfileId():void 0,span=new core.Span({startTimestamp:startTime,endTimestamp:startTime+duration,op:`ui.interaction.${interactionType}`,name:utils.htmlTreeAsString(entry.target),attributes:{release:options.release,environment:options.environment,transaction:routeName,...userDisplay!==void 0&&userDisplay!==""?{user:userDisplay}:{},...profileId!==void 0?{profile_id:profileId}:{},...replayId!==void 0?{replay_id:replayId}:{}},exclusiveTime:metric.value,measurements:{inp:{value:metric.value,unit:"millisecond"}}}),sampleRate=getSampleRate(parentContext,options,interactionsSampleRate);if(sampleRate&&Math.random()<sampleRate){let envelope=span?core.createSpanEnvelope([span],client.getDsn()):void 0,transport=client&&client.getTransport();transport&&envelope&&transport.send(envelope).then(null,reason=>{debugBuild.DEBUG_BUILD&&utils.logger.error("Error while sending interaction:",reason)});return}})}function addPerformanceEntries(transaction){let performance2=getBrowserPerformanceAPI();if(!performance2||!types.WINDOW.performance.getEntries||!utils.browserPerformanceTimeOrigin)return;debugBuild.DEBUG_BUILD&&utils.logger.log("[Tracing] Adding & adjusting spans using Performance API");let timeOrigin=msToSec(utils.browserPerformanceTimeOrigin),performanceEntries=performance2.getEntries(),{op,start_timestamp:transactionStartTime}=core.spanToJSON(transaction);if(performanceEntries.slice(_performanceCursor).forEach(entry=>{let startTime=msToSec(entry.startTime),duration=msToSec(entry.duration);if(!(transaction.op==="navigation"&&transactionStartTime&&timeOrigin+startTime<transactionStartTime))switch(entry.entryType){case"navigation":{_addNavigationSpans(transaction,entry,timeOrigin);break}case"mark":case"paint":case"measure":{_addMeasureSpans(transaction,entry,startTime,duration,timeOrigin);let firstHidden=getVisibilityWatcher.getVisibilityWatcher(),shouldRecord=entry.startTime<firstHidden.firstHiddenTime;entry.name==="first-paint"&&shouldRecord&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding FP"),_measurements.fp={value:entry.startTime,unit:"millisecond"}),entry.name==="first-contentful-paint"&&shouldRecord&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding FCP"),_measurements.fcp={value:entry.startTime,unit:"millisecond"});break}case"resource":{_addResourceSpans(transaction,entry,entry.name,startTime,duration,timeOrigin);break}}}),_performanceCursor=Math.max(performanceEntries.length-1,0),_trackNavigator(transaction),op==="pageload"){_addTtfbRequestTimeToMeasurements(_measurements),["fcp","fp","lcp"].forEach(name=>{if(!_measurements[name]||!transactionStartTime||timeOrigin>=transactionStartTime)return;let oldValue=_measurements[name].value,measurementTimestamp=timeOrigin+msToSec(oldValue),normalizedValue=Math.abs((measurementTimestamp-transactionStartTime)*1e3),delta=normalizedValue-oldValue;debugBuild.DEBUG_BUILD&&utils.logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`),_measurements[name].value=normalizedValue});let fidMark=_measurements["mark.fid"];fidMark&&_measurements.fid&&(utils$1._startChild(transaction,{description:"first input delay",endTimestamp:fidMark.value+msToSec(_measurements.fid.value),op:"ui.action",origin:"auto.ui.browser.metrics",startTimestamp:fidMark.value}),delete _measurements["mark.fid"]),"fcp"in _measurements||delete _measurements.cls,Object.keys(_measurements).forEach(measurementName=>{core.setMeasurement(measurementName,_measurements[measurementName].value,_measurements[measurementName].unit)}),_tagMetricInfo(transaction)}_lcpEntry=void 0,_clsEntry=void 0,_measurements={}}function _addMeasureSpans(transaction,entry,startTime,duration,timeOrigin){let measureStartTimestamp=timeOrigin+startTime,measureEndTimestamp=measureStartTimestamp+duration;return utils$1._startChild(transaction,{description:entry.name,endTimestamp:measureEndTimestamp,op:entry.entryType,origin:"auto.resource.browser.metrics",startTimestamp:measureStartTimestamp}),measureStartTimestamp}function _addNavigationSpans(transaction,entry,timeOrigin){["unloadEvent","redirect","domContentLoadedEvent","loadEvent","connect"].forEach(event=>{_addPerformanceNavigationTiming(transaction,entry,event,timeOrigin)}),_addPerformanceNavigationTiming(transaction,entry,"secureConnection",timeOrigin,"TLS/SSL","connectEnd"),_addPerformanceNavigationTiming(transaction,entry,"fetch",timeOrigin,"cache","domainLookupStart"),_addPerformanceNavigationTiming(transaction,entry,"domainLookup",timeOrigin,"DNS"),_addRequest(transaction,entry,timeOrigin)}function _addPerformanceNavigationTiming(transaction,entry,event,timeOrigin,description,eventEnd){let end=eventEnd?entry[eventEnd]:entry[`${event}End`],start=entry[`${event}Start`];!start||!end||utils$1._startChild(transaction,{op:"browser",origin:"auto.browser.browser.metrics",description:description||event,startTimestamp:timeOrigin+msToSec(start),endTimestamp:timeOrigin+msToSec(end)})}function _addRequest(transaction,entry,timeOrigin){entry.responseEnd&&(utils$1._startChild(transaction,{op:"browser",origin:"auto.browser.browser.metrics",description:"request",startTimestamp:timeOrigin+msToSec(entry.requestStart),endTimestamp:timeOrigin+msToSec(entry.responseEnd)}),utils$1._startChild(transaction,{op:"browser",origin:"auto.browser.browser.metrics",description:"response",startTimestamp:timeOrigin+msToSec(entry.responseStart),endTimestamp:timeOrigin+msToSec(entry.responseEnd)}))}function _addResourceSpans(transaction,entry,resourceUrl,startTime,duration,timeOrigin){if(entry.initiatorType==="xmlhttprequest"||entry.initiatorType==="fetch")return;let parsedUrl=utils.parseUrl(resourceUrl),data={};setResourceEntrySizeData(data,entry,"transferSize","http.response_transfer_size"),setResourceEntrySizeData(data,entry,"encodedBodySize","http.response_content_length"),setResourceEntrySizeData(data,entry,"decodedBodySize","http.decoded_response_content_length"),"renderBlockingStatus"in entry&&(data["resource.render_blocking_status"]=entry.renderBlockingStatus),parsedUrl.protocol&&(data["url.scheme"]=parsedUrl.protocol.split(":").pop()),parsedUrl.host&&(data["server.address"]=parsedUrl.host),data["url.same_origin"]=resourceUrl.includes(types.WINDOW.location.origin);let startTimestamp=timeOrigin+startTime,endTimestamp=startTimestamp+duration;utils$1._startChild(transaction,{description:resourceUrl.replace(types.WINDOW.location.origin,""),endTimestamp,op:entry.initiatorType?`resource.${entry.initiatorType}`:"resource.other",origin:"auto.resource.browser.metrics",startTimestamp,data})}function _trackNavigator(transaction){let navigator2=types.WINDOW.navigator;if(!navigator2)return;let connection=navigator2.connection;connection&&(connection.effectiveType&&transaction.setTag("effectiveConnectionType",connection.effectiveType),connection.type&&transaction.setTag("connectionType",connection.type),utils$1.isMeasurementValue(connection.rtt)&&(_measurements["connection.rtt"]={value:connection.rtt,unit:"millisecond"})),utils$1.isMeasurementValue(navigator2.deviceMemory)&&transaction.setTag("deviceMemory",`${navigator2.deviceMemory} GB`),utils$1.isMeasurementValue(navigator2.hardwareConcurrency)&&transaction.setTag("hardwareConcurrency",String(navigator2.hardwareConcurrency))}function _tagMetricInfo(transaction){_lcpEntry&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding LCP Data"),_lcpEntry.element&&transaction.setTag("lcp.element",utils.htmlTreeAsString(_lcpEntry.element)),_lcpEntry.id&&transaction.setTag("lcp.id",_lcpEntry.id),_lcpEntry.url&&transaction.setTag("lcp.url",_lcpEntry.url.trim().slice(0,200)),transaction.setTag("lcp.size",_lcpEntry.size)),_clsEntry&&_clsEntry.sources&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding CLS Data"),_clsEntry.sources.forEach((source,index)=>transaction.setTag(`cls.source.${index+1}`,utils.htmlTreeAsString(source.node))))}function setResourceEntrySizeData(data,entry,key,dataKey){let entryVal=entry[key];entryVal!=null&&entryVal<MAX_INT_AS_BYTES&&(data[dataKey]=entryVal)}function _addTtfbRequestTimeToMeasurements(_measurements2){let navEntry=getNavigationEntry.getNavigationEntry();if(!navEntry)return;let{responseStart,requestStart}=navEntry;requestStart<=responseStart&&(debugBuild.DEBUG_BUILD&&utils.logger.log("[Measurements] Adding TTFB Request Time"),_measurements2["ttfb.requestTime"]={value:responseStart-requestStart,unit:"millisecond"})}function getSampleRate(transactionContext,options,interactionsSampleRate){if(!core.hasTracingEnabled(options))return!1;let sampleRate;return transactionContext!==void 0&&typeof options.tracesSampler=="function"?sampleRate=options.tracesSampler({transactionContext,name:transactionContext.name,parentSampled:transactionContext.parentSampled,attributes:{...transactionContext.data,...transactionContext.attributes},location:types.WINDOW.location}):transactionContext!==void 0&&transactionContext.sampled!==void 0?sampleRate=transactionContext.sampled:typeof options.tracesSampleRate<"u"?sampleRate=options.tracesSampleRate:sampleRate=1,core.isValidSampleRate(sampleRate)?sampleRate===!0?interactionsSampleRate:sampleRate===!1?0:sampleRate*interactionsSampleRate:(debugBuild.DEBUG_BUILD&&utils.logger.warn("[Tracing] Discarding interaction span because of invalid sample rate."),!1)}exports._addMeasureSpans=_addMeasureSpans;exports._addResourceSpans=_addResourceSpans;exports.addPerformanceEntries=addPerformanceEntries;exports.startTrackingINP=startTrackingINP;exports.startTrackingInteractions=startTrackingInteractions;exports.startTrackingLongTasks=startTrackingLongTasks;exports.startTrackingWebVitals=startTrackingWebVitals}});var require_fetch2=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/common/fetch.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs();function instrumentFetchRequest(handlerData,shouldCreateSpan,shouldAttachHeaders,spans,spanOrigin="auto.http.browser"){if(!core.hasTracingEnabled()||!handlerData.fetchData)return;let shouldCreateSpanResult=shouldCreateSpan(handlerData.fetchData.url);if(handlerData.endTimestamp&&shouldCreateSpanResult){let spanId=handlerData.fetchData.__span;if(!spanId)return;let span2=spans[spanId];span2&&(endSpan(span2,handlerData),delete spans[spanId]);return}let scope=core.getCurrentScope(),client=core.getClient(),{method,url}=handlerData.fetchData,fullUrl=getFullURL(url),host=fullUrl?utils.parseUrl(fullUrl).host:void 0,span=shouldCreateSpanResult?core.startInactiveSpan({name:`${method} ${url}`,onlyIfParent:!0,attributes:{url,type:"fetch","http.method":method,"http.url":fullUrl,"server.address":host,[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:spanOrigin},op:"http.client"}):void 0;if(span&&(handlerData.fetchData.__span=span.spanContext().spanId,spans[span.spanContext().spanId]=span),shouldAttachHeaders(handlerData.fetchData.url)&&client){let request=handlerData.args[0];handlerData.args[1]=handlerData.args[1]||{};let options=handlerData.args[1];options.headers=addTracingHeadersToFetchRequest(request,client,scope,options,span)}return span}function addTracingHeadersToFetchRequest(request,client,scope,options,requestSpan){let span=requestSpan||scope.getSpan(),isolationScope=core.getIsolationScope(),{traceId,spanId,sampled,dsc}={...isolationScope.getPropagationContext(),...scope.getPropagationContext()},sentryTraceHeader=span?core.spanToTraceHeader(span):utils.generateSentryTraceHeader(traceId,spanId,sampled),sentryBaggageHeader=utils.dynamicSamplingContextToSentryBaggageHeader(dsc||(span?core.getDynamicSamplingContextFromSpan(span):core.getDynamicSamplingContextFromClient(traceId,client,scope))),headers=options.headers||(typeof Request<"u"&&utils.isInstanceOf(request,Request)?request.headers:void 0);if(headers)if(typeof Headers<"u"&&utils.isInstanceOf(headers,Headers)){let newHeaders=new Headers(headers);return newHeaders.append("sentry-trace",sentryTraceHeader),sentryBaggageHeader&&newHeaders.append(utils.BAGGAGE_HEADER_NAME,sentryBaggageHeader),newHeaders}else if(Array.isArray(headers)){let newHeaders=[...headers,["sentry-trace",sentryTraceHeader]];return sentryBaggageHeader&&newHeaders.push([utils.BAGGAGE_HEADER_NAME,sentryBaggageHeader]),newHeaders}else{let existingBaggageHeader="baggage"in headers?headers.baggage:void 0,newBaggageHeaders=[];return Array.isArray(existingBaggageHeader)?newBaggageHeaders.push(...existingBaggageHeader):existingBaggageHeader&&newBaggageHeaders.push(existingBaggageHeader),sentryBaggageHeader&&newBaggageHeaders.push(sentryBaggageHeader),{...headers,"sentry-trace":sentryTraceHeader,baggage:newBaggageHeaders.length>0?newBaggageHeaders.join(","):void 0}}else return{"sentry-trace":sentryTraceHeader,baggage:sentryBaggageHeader}}function getFullURL(url){try{return new URL(url).href}catch{return}}function endSpan(span,handlerData){if(handlerData.response){core.setHttpStatus(span,handlerData.response.status);let contentLength=handlerData.response&&handlerData.response.headers&&handlerData.response.headers.get("content-length");if(contentLength){let contentLengthNum=parseInt(contentLength);contentLengthNum>0&&span.setAttribute("http.response_content_length",contentLengthNum)}}else handlerData.error&&span.setStatus("internal_error");span.end()}exports.addTracingHeadersToFetchRequest=addTracingHeadersToFetchRequest;exports.instrumentFetchRequest=instrumentFetchRequest}});var require_request=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/request.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),fetch2=require_fetch2(),instrument=require_instrument2(),types=require_types(),DEFAULT_TRACE_PROPAGATION_TARGETS=["localhost",/^\/(?!\/)/],defaultRequestInstrumentationOptions={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,tracingOrigins:DEFAULT_TRACE_PROPAGATION_TARGETS,tracePropagationTargets:DEFAULT_TRACE_PROPAGATION_TARGETS};function instrumentOutgoingRequests(_options){let{traceFetch,traceXHR,tracePropagationTargets,tracingOrigins,shouldCreateSpanForRequest,enableHTTPTimings}={traceFetch:defaultRequestInstrumentationOptions.traceFetch,traceXHR:defaultRequestInstrumentationOptions.traceXHR,..._options},shouldCreateSpan=typeof shouldCreateSpanForRequest=="function"?shouldCreateSpanForRequest:_=>!0,shouldAttachHeadersWithTargets=url=>shouldAttachHeaders(url,tracePropagationTargets||tracingOrigins),spans={};traceFetch&&utils.addFetchInstrumentationHandler(handlerData=>{let createdSpan=fetch2.instrumentFetchRequest(handlerData,shouldCreateSpan,shouldAttachHeadersWithTargets,spans);if(createdSpan){let fullUrl=getFullURL(handlerData.fetchData.url),host=fullUrl?utils.parseUrl(fullUrl).host:void 0;createdSpan.setAttributes({"http.url":fullUrl,"server.address":host})}enableHTTPTimings&&createdSpan&&addHTTPTimings(createdSpan)}),traceXHR&&utils.addXhrInstrumentationHandler(handlerData=>{let createdSpan=xhrCallback(handlerData,shouldCreateSpan,shouldAttachHeadersWithTargets,spans);enableHTTPTimings&&createdSpan&&addHTTPTimings(createdSpan)})}function isPerformanceResourceTiming(entry){return entry.entryType==="resource"&&"initiatorType"in entry&&typeof entry.nextHopProtocol=="string"&&(entry.initiatorType==="fetch"||entry.initiatorType==="xmlhttprequest")}function addHTTPTimings(span){let{url}=core.spanToJSON(span).data||{};if(!url||typeof url!="string")return;let cleanup=instrument.addPerformanceInstrumentationHandler("resource",({entries})=>{entries.forEach(entry=>{isPerformanceResourceTiming(entry)&&entry.name.endsWith(url)&&(resourceTimingEntryToSpanData(entry).forEach(data=>span.setAttribute(...data)),setTimeout(cleanup))})})}function extractNetworkProtocol(nextHopProtocol){let name="unknown",version="unknown",_name="";for(let char of nextHopProtocol){if(char==="/"){[name,version]=nextHopProtocol.split("/");break}if(!isNaN(Number(char))){name=_name==="h"?"http":_name,version=nextHopProtocol.split(_name)[1];break}_name+=char}return _name===nextHopProtocol&&(name=_name),{name,version}}function getAbsoluteTime(time=0){return((utils.browserPerformanceTimeOrigin||performance.timeOrigin)+time)/1e3}function resourceTimingEntryToSpanData(resourceTiming){let{name,version}=extractNetworkProtocol(resourceTiming.nextHopProtocol),timingSpanData=[];return timingSpanData.push(["network.protocol.version",version],["network.protocol.name",name]),utils.browserPerformanceTimeOrigin?[...timingSpanData,["http.request.redirect_start",getAbsoluteTime(resourceTiming.redirectStart)],["http.request.fetch_start",getAbsoluteTime(resourceTiming.fetchStart)],["http.request.domain_lookup_start",getAbsoluteTime(resourceTiming.domainLookupStart)],["http.request.domain_lookup_end",getAbsoluteTime(resourceTiming.domainLookupEnd)],["http.request.connect_start",getAbsoluteTime(resourceTiming.connectStart)],["http.request.secure_connection_start",getAbsoluteTime(resourceTiming.secureConnectionStart)],["http.request.connection_end",getAbsoluteTime(resourceTiming.connectEnd)],["http.request.request_start",getAbsoluteTime(resourceTiming.requestStart)],["http.request.response_start",getAbsoluteTime(resourceTiming.responseStart)],["http.request.response_end",getAbsoluteTime(resourceTiming.responseEnd)]]:timingSpanData}function shouldAttachHeaders(url,tracePropagationTargets){return utils.stringMatchesSomePattern(url,tracePropagationTargets||DEFAULT_TRACE_PROPAGATION_TARGETS)}function xhrCallback(handlerData,shouldCreateSpan,shouldAttachHeaders2,spans){let xhr=handlerData.xhr,sentryXhrData=xhr&&xhr[utils.SENTRY_XHR_DATA_KEY];if(!core.hasTracingEnabled()||!xhr||xhr.__sentry_own_request__||!sentryXhrData)return;let shouldCreateSpanResult=shouldCreateSpan(sentryXhrData.url);if(handlerData.endTimestamp&&shouldCreateSpanResult){let spanId=xhr.__sentry_xhr_span_id__;if(!spanId)return;let span2=spans[spanId];span2&&sentryXhrData.status_code!==void 0&&(core.setHttpStatus(span2,sentryXhrData.status_code),span2.end(),delete spans[spanId]);return}let scope=core.getCurrentScope(),isolationScope=core.getIsolationScope(),fullUrl=getFullURL(sentryXhrData.url),host=fullUrl?utils.parseUrl(fullUrl).host:void 0,span=shouldCreateSpanResult?core.startInactiveSpan({name:`${sentryXhrData.method} ${sentryXhrData.url}`,onlyIfParent:!0,attributes:{type:"xhr","http.method":sentryXhrData.method,"http.url":fullUrl,url:sentryXhrData.url,"server.address":host,[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]:"auto.http.browser"},op:"http.client"}):void 0;span&&(xhr.__sentry_xhr_span_id__=span.spanContext().spanId,spans[xhr.__sentry_xhr_span_id__]=span);let client=core.getClient();if(xhr.setRequestHeader&&shouldAttachHeaders2(sentryXhrData.url)&&client){let{traceId,spanId,sampled,dsc}={...isolationScope.getPropagationContext(),...scope.getPropagationContext()},sentryTraceHeader=span?core.spanToTraceHeader(span):utils.generateSentryTraceHeader(traceId,spanId,sampled),sentryBaggageHeader=utils.dynamicSamplingContextToSentryBaggageHeader(dsc||(span?core.getDynamicSamplingContextFromSpan(span):core.getDynamicSamplingContextFromClient(traceId,client,scope)));setHeaderOnXhr(xhr,sentryTraceHeader,sentryBaggageHeader)}return span}function setHeaderOnXhr(xhr,sentryTraceHeader,sentryBaggageHeader){try{xhr.setRequestHeader("sentry-trace",sentryTraceHeader),sentryBaggageHeader&&xhr.setRequestHeader(utils.BAGGAGE_HEADER_NAME,sentryBaggageHeader)}catch{}}function getFullURL(url){try{return new URL(url,types.WINDOW.location.origin).href}catch{return}}exports.DEFAULT_TRACE_PROPAGATION_TARGETS=DEFAULT_TRACE_PROPAGATION_TARGETS;exports.defaultRequestInstrumentationOptions=defaultRequestInstrumentationOptions;exports.extractNetworkProtocol=extractNetworkProtocol;exports.instrumentOutgoingRequests=instrumentOutgoingRequests;exports.shouldAttachHeaders=shouldAttachHeaders;exports.xhrCallback=xhrCallback}});var require_router=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/router.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),debugBuild=require_debug_build3(),types=require_types();function instrumentRoutingWithDefaults(customStartTransaction,startTransactionOnPageLoad=!0,startTransactionOnLocationChange=!0){if(!types.WINDOW||!types.WINDOW.location){debugBuild.DEBUG_BUILD&&utils.logger.warn("Could not initialize routing instrumentation due to invalid location");return}let startingUrl=types.WINDOW.location.href,activeTransaction;startTransactionOnPageLoad&&(activeTransaction=customStartTransaction({name:types.WINDOW.location.pathname,startTimestamp:utils.browserPerformanceTimeOrigin?utils.browserPerformanceTimeOrigin/1e3:void 0,op:"pageload",origin:"auto.pageload.browser",metadata:{source:"url"}})),startTransactionOnLocationChange&&utils.addHistoryInstrumentationHandler(({to,from})=>{if(from===void 0&&startingUrl&&startingUrl.indexOf(to)!==-1){startingUrl=void 0;return}from!==to&&(startingUrl=void 0,activeTransaction&&(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`),activeTransaction.end()),activeTransaction=customStartTransaction({name:types.WINDOW.location.pathname,op:"navigation",origin:"auto.navigation.browser",metadata:{source:"url"}}))})}exports.instrumentRoutingWithDefaults=instrumentRoutingWithDefaults}});var require_browsertracing=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browsertracing.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),backgroundtab=require_backgroundtab(),instrument=require_instrument2(),index=require_metrics(),request=require_request(),router=require_router(),types=require_types(),BROWSER_TRACING_INTEGRATION_ID="BrowserTracing",DEFAULT_BROWSER_TRACING_OPTIONS={...core.TRACING_DEFAULTS,markBackgroundTransactions:!0,routingInstrumentation:router.instrumentRoutingWithDefaults,startTransactionOnLocationChange:!0,startTransactionOnPageLoad:!0,enableLongTask:!0,enableInp:!1,interactionsSampleRate:1,_experiments:{},...request.defaultRequestInstrumentationOptions},MAX_INTERACTIONS=10,BrowserTracing=class{constructor(_options){this.name=BROWSER_TRACING_INTEGRATION_ID,this._hasSetTracePropagationTargets=!1,core.addTracingExtensions(),debugBuild.DEBUG_BUILD&&(this._hasSetTracePropagationTargets=!!(_options&&(_options.tracePropagationTargets||_options.tracingOrigins))),this.options={...DEFAULT_BROWSER_TRACING_OPTIONS,..._options},this.options._experiments.enableLongTask!==void 0&&(this.options.enableLongTask=this.options._experiments.enableLongTask),_options&&!_options.tracePropagationTargets&&_options.tracingOrigins&&(this.options.tracePropagationTargets=_options.tracingOrigins),this._collectWebVitals=index.startTrackingWebVitals(),this._interactionIdToRouteNameMapping={},this.options.enableInp&&index.startTrackingINP(this._interactionIdToRouteNameMapping,this.options.interactionsSampleRate),this.options.enableLongTask&&index.startTrackingLongTasks(),this.options._experiments.enableInteractions&&index.startTrackingInteractions(),this._latestRoute={name:void 0,context:void 0}}setupOnce(_,getCurrentHub){this._getCurrentHub=getCurrentHub;let client=getCurrentHub().getClient(),clientOptions=client&&client.getOptions(),{routingInstrumentation:instrumentRouting,startTransactionOnLocationChange,startTransactionOnPageLoad,markBackgroundTransactions,traceFetch,traceXHR,shouldCreateSpanForRequest,enableHTTPTimings,_experiments}=this.options,clientOptionsTracePropagationTargets=clientOptions&&clientOptions.tracePropagationTargets,tracePropagationTargets=clientOptionsTracePropagationTargets||this.options.tracePropagationTargets;debugBuild.DEBUG_BUILD&&this._hasSetTracePropagationTargets&&clientOptionsTracePropagationTargets&&utils.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used."),instrumentRouting(context=>{let transaction=this._createRouteTransaction(context);return this.options._experiments.onStartRouteTransaction&&this.options._experiments.onStartRouteTransaction(transaction,context,getCurrentHub),transaction},startTransactionOnPageLoad,startTransactionOnLocationChange),markBackgroundTransactions&&backgroundtab.registerBackgroundTabDetection(),_experiments.enableInteractions&&this._registerInteractionListener(),this.options.enableInp&&this._registerInpInteractionListener(),request.instrumentOutgoingRequests({traceFetch,traceXHR,tracePropagationTargets,shouldCreateSpanForRequest,enableHTTPTimings})}_createRouteTransaction(context){if(!this._getCurrentHub){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);return}let hub=this._getCurrentHub(),{beforeNavigate,idleTimeout,finalTimeout,heartbeatInterval}=this.options,isPageloadTransaction=context.op==="pageload",expandedContext;if(isPageloadTransaction){let sentryTrace=isPageloadTransaction?getMetaContent("sentry-trace"):"",baggage=isPageloadTransaction?getMetaContent("baggage"):void 0,{traceId,dsc,parentSpanId,sampled}=utils.propagationContextFromHeaders(sentryTrace,baggage);expandedContext={traceId,parentSpanId,parentSampled:sampled,...context,metadata:{...context.metadata,dynamicSamplingContext:dsc},trimEnd:!0}}else expandedContext={trimEnd:!0,...context};let modifiedContext=typeof beforeNavigate=="function"?beforeNavigate(expandedContext):expandedContext,finalContext=modifiedContext===void 0?{...expandedContext,sampled:!1}:modifiedContext;finalContext.metadata=finalContext.name!==expandedContext.name?{...finalContext.metadata,source:"custom"}:finalContext.metadata,this._latestRoute.name=finalContext.name,this._latestRoute.context=finalContext,finalContext.sampled===!1&&debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`),debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);let{location}=types.WINDOW,idleTransaction=core.startIdleTransaction(hub,finalContext,idleTimeout,finalTimeout,!0,{location},heartbeatInterval,isPageloadTransaction);return isPageloadTransaction&&types.WINDOW.document&&(types.WINDOW.document.addEventListener("readystatechange",()=>{["interactive","complete"].includes(types.WINDOW.document.readyState)&&idleTransaction.sendAutoFinishSignal()}),["interactive","complete"].includes(types.WINDOW.document.readyState)&&idleTransaction.sendAutoFinishSignal()),idleTransaction.registerBeforeFinishCallback(transaction=>{this._collectWebVitals(),index.addPerformanceEntries(transaction)}),idleTransaction}_registerInteractionListener(){let inflightInteractionTransaction,registerInteractionTransaction=()=>{let{idleTimeout,finalTimeout,heartbeatInterval}=this.options,op="ui.action.click",currentTransaction=core.getActiveTransaction();if(currentTransaction&¤tTransaction.op&&["navigation","pageload"].includes(currentTransaction.op)){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`);return}if(inflightInteractionTransaction&&(inflightInteractionTransaction.setFinishReason("interactionInterrupted"),inflightInteractionTransaction.end(),inflightInteractionTransaction=void 0),!this._getCurrentHub){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${op} transaction because _getCurrentHub is invalid.`);return}if(!this._latestRoute.name){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);return}let hub=this._getCurrentHub(),{location}=types.WINDOW,context={name:this._latestRoute.name,op,trimEnd:!0,data:{[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:this._latestRoute.context?getSource(this._latestRoute.context):"url"}};inflightInteractionTransaction=core.startIdleTransaction(hub,context,idleTimeout,finalTimeout,!0,{location},heartbeatInterval)};["click"].forEach(type=>{types.WINDOW.document&&addEventListener(type,registerInteractionTransaction,{once:!1,capture:!0})})}_registerInpInteractionListener(){let handleEntries=({entries})=>{let client=core.getClient(),replay=client!==void 0&&client.getIntegrationByName!==void 0?client.getIntegrationByName("Replay"):void 0,replayId=replay!==void 0?replay.getReplayId():void 0,activeTransaction=core.getActiveTransaction(),currentScope=core.getCurrentScope(),user=currentScope!==void 0?currentScope.getUser():void 0;entries.forEach(entry=>{if(isPerformanceEventTiming(entry)){let interactionId=entry.interactionId;if(interactionId===void 0)return;let existingInteraction=this._interactionIdToRouteNameMapping[interactionId],duration=entry.duration,startTime=entry.startTime,keys=Object.keys(this._interactionIdToRouteNameMapping),minInteractionId=keys.length>0?keys.reduce((a,b)=>this._interactionIdToRouteNameMapping[a].duration<this._interactionIdToRouteNameMapping[b].duration?a:b):void 0;if(entry.entryType==="first-input"&&keys.map(key=>this._interactionIdToRouteNameMapping[key]).some(interaction=>interaction.duration===duration&&interaction.startTime===startTime)||!interactionId)return;if(existingInteraction)existingInteraction.duration=Math.max(existingInteraction.duration,duration);else if(keys.length<MAX_INTERACTIONS||minInteractionId===void 0||duration>this._interactionIdToRouteNameMapping[minInteractionId].duration){let routeName=this._latestRoute.name,parentContext=this._latestRoute.context;routeName&&parentContext&&(minInteractionId&&Object.keys(this._interactionIdToRouteNameMapping).length>=MAX_INTERACTIONS&&delete this._interactionIdToRouteNameMapping[minInteractionId],this._interactionIdToRouteNameMapping[interactionId]={routeName,duration,parentContext,user,activeTransaction,replayId,startTime})}}})};instrument.addPerformanceInstrumentationHandler("event",handleEntries),instrument.addPerformanceInstrumentationHandler("first-input",handleEntries)}};function getMetaContent(metaName){let metaTag=utils.getDomElement(`meta[name=${metaName}]`);return metaTag?metaTag.getAttribute("content"):void 0}function getSource(context){let sourceFromAttributes=context.attributes&&context.attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE],sourceFromData=context.data&&context.data[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE],sourceFromMetadata=context.metadata&&context.metadata.source;return sourceFromAttributes||sourceFromData||sourceFromMetadata}function isPerformanceEventTiming(entry){return"duration"in entry}exports.BROWSER_TRACING_INTEGRATION_ID=BROWSER_TRACING_INTEGRATION_ID;exports.BrowserTracing=BrowserTracing;exports.getMetaContent=getMetaContent}});var require_browserTracingIntegration=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/browser/browserTracingIntegration.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build3(),backgroundtab=require_backgroundtab(),instrument=require_instrument2(),index=require_metrics(),request=require_request(),types=require_types(),BROWSER_TRACING_INTEGRATION_ID="BrowserTracing",DEFAULT_BROWSER_TRACING_OPTIONS={...core.TRACING_DEFAULTS,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableInp:!1,interactionsSampleRate:1,_experiments:{},...request.defaultRequestInstrumentationOptions},browserTracingIntegration=(_options={})=>{let _hasSetTracePropagationTargets=debugBuild.DEBUG_BUILD?!!(_options.tracePropagationTargets||_options.tracingOrigins):!1;core.addTracingExtensions(),!_options.tracePropagationTargets&&_options.tracingOrigins&&(_options.tracePropagationTargets=_options.tracingOrigins);let options={...DEFAULT_BROWSER_TRACING_OPTIONS,..._options},_collectWebVitals=index.startTrackingWebVitals(),interactionIdToRouteNameMapping={};options.enableInp&&index.startTrackingINP(interactionIdToRouteNameMapping,options.interactionsSampleRate),options.enableLongTask&&index.startTrackingLongTasks(),options._experiments.enableInteractions&&index.startTrackingInteractions();let latestRoute={name:void 0,context:void 0};function _createRouteTransaction(context){let hub=core.getCurrentHub(),{beforeStartSpan,idleTimeout,finalTimeout,heartbeatInterval}=options,isPageloadTransaction=context.op==="pageload",expandedContext;if(isPageloadTransaction){let sentryTrace=isPageloadTransaction?getMetaContent("sentry-trace"):"",baggage=isPageloadTransaction?getMetaContent("baggage"):void 0,{traceId,dsc,parentSpanId,sampled}=utils.propagationContextFromHeaders(sentryTrace,baggage);expandedContext={traceId,parentSpanId,parentSampled:sampled,...context,metadata:{...context.metadata,dynamicSamplingContext:dsc},trimEnd:!0}}else expandedContext={trimEnd:!0,...context};let finalContext=beforeStartSpan?beforeStartSpan(expandedContext):expandedContext;finalContext.metadata=finalContext.name!==expandedContext.name?{...finalContext.metadata,source:"custom"}:finalContext.metadata,latestRoute.name=finalContext.name,latestRoute.context=finalContext,finalContext.sampled===!1&&debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`),debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);let{location}=types.WINDOW,idleTransaction=core.startIdleTransaction(hub,finalContext,idleTimeout,finalTimeout,!0,{location},heartbeatInterval,isPageloadTransaction);return isPageloadTransaction&&types.WINDOW.document&&(types.WINDOW.document.addEventListener("readystatechange",()=>{["interactive","complete"].includes(types.WINDOW.document.readyState)&&idleTransaction.sendAutoFinishSignal()}),["interactive","complete"].includes(types.WINDOW.document.readyState)&&idleTransaction.sendAutoFinishSignal()),idleTransaction.registerBeforeFinishCallback(transaction=>{_collectWebVitals(),index.addPerformanceEntries(transaction)}),idleTransaction}return{name:BROWSER_TRACING_INTEGRATION_ID,setupOnce:()=>{},afterAllSetup(client){let clientOptions=client.getOptions(),{markBackgroundSpan,traceFetch,traceXHR,shouldCreateSpanForRequest,enableHTTPTimings,_experiments}=options,clientOptionsTracePropagationTargets=clientOptions&&clientOptions.tracePropagationTargets,tracePropagationTargets=clientOptionsTracePropagationTargets||options.tracePropagationTargets;debugBuild.DEBUG_BUILD&&_hasSetTracePropagationTargets&&clientOptionsTracePropagationTargets&&utils.logger.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.");let activeSpan,startingUrl=types.WINDOW.location&&types.WINDOW.location.href;if(client.on&&(client.on("startNavigationSpan",context=>{activeSpan&&(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Finishing current transaction with op: ${core.spanToJSON(activeSpan).op}`),activeSpan.end()),activeSpan=_createRouteTransaction({op:"navigation",...context})}),client.on("startPageLoadSpan",context=>{activeSpan&&(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Finishing current transaction with op: ${core.spanToJSON(activeSpan).op}`),activeSpan.end()),activeSpan=_createRouteTransaction({op:"pageload",...context})})),options.instrumentPageLoad&&client.emit&&types.WINDOW.location){let context={name:types.WINDOW.location.pathname,startTimestamp:utils.browserPerformanceTimeOrigin?utils.browserPerformanceTimeOrigin/1e3:void 0,origin:"auto.pageload.browser",attributes:{[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingPageLoadSpan(client,context)}options.instrumentNavigation&&client.emit&&types.WINDOW.location&&utils.addHistoryInstrumentationHandler(({to,from})=>{if(from===void 0&&startingUrl&&startingUrl.indexOf(to)!==-1){startingUrl=void 0;return}if(from!==to){startingUrl=void 0;let context={name:types.WINDOW.location.pathname,origin:"auto.navigation.browser",attributes:{[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:"url"}};startBrowserTracingNavigationSpan(client,context)}}),markBackgroundSpan&&backgroundtab.registerBackgroundTabDetection(),_experiments.enableInteractions&®isterInteractionListener(options,latestRoute),options.enableInp&®isterInpInteractionListener(interactionIdToRouteNameMapping,latestRoute),request.instrumentOutgoingRequests({traceFetch,traceXHR,tracePropagationTargets,shouldCreateSpanForRequest,enableHTTPTimings})},options}};function startBrowserTracingPageLoadSpan(client,spanOptions){if(!client.emit)return;client.emit("startPageLoadSpan",spanOptions);let span=core.getActiveSpan();return(span&&core.spanToJSON(span).op)==="pageload"?span:void 0}function startBrowserTracingNavigationSpan(client,spanOptions){if(!client.emit)return;client.emit("startNavigationSpan",spanOptions);let span=core.getActiveSpan();return(span&&core.spanToJSON(span).op)==="navigation"?span:void 0}function getMetaContent(metaName){let metaTag=utils.getDomElement(`meta[name=${metaName}]`);return metaTag?metaTag.getAttribute("content"):void 0}function registerInteractionListener(options,latestRoute){let inflightInteractionTransaction,registerInteractionTransaction=()=>{let{idleTimeout,finalTimeout,heartbeatInterval}=options,op="ui.action.click",currentTransaction=core.getActiveTransaction();if(currentTransaction&¤tTransaction.op&&["navigation","pageload"].includes(currentTransaction.op)){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${op} transaction because a pageload or navigation transaction is in progress.`);return}if(inflightInteractionTransaction&&(inflightInteractionTransaction.setFinishReason("interactionInterrupted"),inflightInteractionTransaction.end(),inflightInteractionTransaction=void 0),!latestRoute.name){debugBuild.DEBUG_BUILD&&utils.logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`);return}let{location}=types.WINDOW,context={name:latestRoute.name,op,trimEnd:!0,data:{[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:latestRoute.context?getSource(latestRoute.context):"url"}};inflightInteractionTransaction=core.startIdleTransaction(core.getCurrentHub(),context,idleTimeout,finalTimeout,!0,{location},heartbeatInterval)};["click"].forEach(type=>{types.WINDOW.document&&addEventListener(type,registerInteractionTransaction,{once:!1,capture:!0})})}function isPerformanceEventTiming(entry){return"duration"in entry}var MAX_INTERACTIONS=10;function registerInpInteractionListener(interactionIdToRouteNameMapping,latestRoute){let handleEntries=({entries})=>{let client=core.getClient(),replay=client!==void 0&&client.getIntegrationByName!==void 0?client.getIntegrationByName("Replay"):void 0,replayId=replay!==void 0?replay.getReplayId():void 0,activeTransaction=core.getActiveTransaction(),currentScope=core.getCurrentScope(),user=currentScope!==void 0?currentScope.getUser():void 0;entries.forEach(entry=>{if(isPerformanceEventTiming(entry)){let interactionId=entry.interactionId;if(interactionId===void 0)return;let existingInteraction=interactionIdToRouteNameMapping[interactionId],duration=entry.duration,startTime=entry.startTime,keys=Object.keys(interactionIdToRouteNameMapping),minInteractionId=keys.length>0?keys.reduce((a,b)=>interactionIdToRouteNameMapping[a].duration<interactionIdToRouteNameMapping[b].duration?a:b):void 0;if(entry.entryType==="first-input"&&keys.map(key=>interactionIdToRouteNameMapping[key]).some(interaction=>interaction.duration===duration&&interaction.startTime===startTime)||!interactionId)return;if(existingInteraction)existingInteraction.duration=Math.max(existingInteraction.duration,duration);else if(keys.length<MAX_INTERACTIONS||minInteractionId===void 0||duration>interactionIdToRouteNameMapping[minInteractionId].duration){let routeName=latestRoute.name,parentContext=latestRoute.context;routeName&&parentContext&&(minInteractionId&&Object.keys(interactionIdToRouteNameMapping).length>=MAX_INTERACTIONS&&delete interactionIdToRouteNameMapping[minInteractionId],interactionIdToRouteNameMapping[interactionId]={routeName,duration,parentContext,user,activeTransaction,replayId,startTime})}}})};instrument.addPerformanceInstrumentationHandler("event",handleEntries),instrument.addPerformanceInstrumentationHandler("first-input",handleEntries)}function getSource(context){let sourceFromAttributes=context.attributes&&context.attributes[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE],sourceFromData=context.data&&context.data[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE],sourceFromMetadata=context.metadata&&context.metadata.source;return sourceFromAttributes||sourceFromData||sourceFromMetadata}exports.BROWSER_TRACING_INTEGRATION_ID=BROWSER_TRACING_INTEGRATION_ID;exports.browserTracingIntegration=browserTracingIntegration;exports.getMetaContent=getMetaContent;exports.startBrowserTracingNavigationSpan=startBrowserTracingNavigationSpan;exports.startBrowserTracingPageLoadSpan=startBrowserTracingPageLoadSpan}});var require_extensions=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/extensions.js"(exports,module){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs();function _autoloadDatabaseIntegrations(){let carrier=core.getMainCarrier();if(!carrier.__SENTRY__)return;let packageToIntegrationMapping={mongodb(){let integration=utils.dynamicRequire(module,"./node/integrations/mongo");return new integration.Mongo},mongoose(){let integration=utils.dynamicRequire(module,"./node/integrations/mongo");return new integration.Mongo},mysql(){let integration=utils.dynamicRequire(module,"./node/integrations/mysql");return new integration.Mysql},pg(){let integration=utils.dynamicRequire(module,"./node/integrations/postgres");return new integration.Postgres}},mappedPackages=Object.keys(packageToIntegrationMapping).filter(moduleName=>!!utils.loadModule(moduleName)).map(pkg=>{try{return packageToIntegrationMapping[pkg]()}catch{return}}).filter(p=>p);mappedPackages.length>0&&(carrier.__SENTRY__.integrations=[...carrier.__SENTRY__.integrations||[],...mappedPackages])}function addExtensionMethods(){core.addTracingExtensions(),utils.isNodeEnv()&&_autoloadDatabaseIntegrations()}exports.addExtensionMethods=addExtensionMethods}});var require_cjs3=__commonJS({"../../node_modules/.pnpm/@sentry-internal+tracing@7.120.1/node_modules/@sentry-internal/tracing/cjs/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),express=require_express(),postgres=require_postgres(),mysql=require_mysql(),mongo=require_mongo(),prisma=require_prisma(),graphql=require_graphql(),apollo=require_apollo(),lazy=require_lazy(),browsertracing=require_browsertracing(),browserTracingIntegration=require_browserTracingIntegration(),request=require_request(),instrument=require_instrument2(),fetch2=require_fetch2(),extensions=require_extensions();exports.IdleTransaction=core.IdleTransaction;exports.Span=core.Span;exports.SpanStatus=core.SpanStatus;exports.Transaction=core.Transaction;exports.extractTraceparentData=core.extractTraceparentData;exports.getActiveTransaction=core.getActiveTransaction;exports.hasTracingEnabled=core.hasTracingEnabled;exports.spanStatusfromHttpCode=core.spanStatusfromHttpCode;exports.startIdleTransaction=core.startIdleTransaction;exports.TRACEPARENT_REGEXP=utils.TRACEPARENT_REGEXP;exports.stripUrlQueryAndFragment=utils.stripUrlQueryAndFragment;exports.Express=express.Express;exports.Postgres=postgres.Postgres;exports.Mysql=mysql.Mysql;exports.Mongo=mongo.Mongo;exports.Prisma=prisma.Prisma;exports.GraphQL=graphql.GraphQL;exports.Apollo=apollo.Apollo;exports.lazyLoadedNodePerformanceMonitoringIntegrations=lazy.lazyLoadedNodePerformanceMonitoringIntegrations;exports.BROWSER_TRACING_INTEGRATION_ID=browsertracing.BROWSER_TRACING_INTEGRATION_ID;exports.BrowserTracing=browsertracing.BrowserTracing;exports.browserTracingIntegration=browserTracingIntegration.browserTracingIntegration;exports.startBrowserTracingNavigationSpan=browserTracingIntegration.startBrowserTracingNavigationSpan;exports.startBrowserTracingPageLoadSpan=browserTracingIntegration.startBrowserTracingPageLoadSpan;exports.defaultRequestInstrumentationOptions=request.defaultRequestInstrumentationOptions;exports.instrumentOutgoingRequests=request.instrumentOutgoingRequests;exports.addClsInstrumentationHandler=instrument.addClsInstrumentationHandler;exports.addFidInstrumentationHandler=instrument.addFidInstrumentationHandler;exports.addLcpInstrumentationHandler=instrument.addLcpInstrumentationHandler;exports.addPerformanceInstrumentationHandler=instrument.addPerformanceInstrumentationHandler;exports.addTracingHeadersToFetchRequest=fetch2.addTracingHeadersToFetchRequest;exports.instrumentFetchRequest=fetch2.instrumentFetchRequest;exports.addExtensionMethods=extensions.addExtensionMethods}});var require_tracing2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var tracing=require_cjs3(),utils=require_cjs();function autoDiscoverNodePerformanceMonitoringIntegrations(){let loadedIntegrations=tracing.lazyLoadedNodePerformanceMonitoringIntegrations.map(tryLoad=>{try{return tryLoad()}catch{return}}).filter(integration=>!!integration);return loadedIntegrations.length===0&&utils.logger.warn("Performance monitoring integrations could not be automatically loaded."),loadedIntegrations.filter(integration=>!!integration.loadDependency())}exports.autoDiscoverNodePerformanceMonitoringIntegrations=autoDiscoverNodePerformanceMonitoringIntegrations}});var require_client=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/client.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var os=__require("os"),util=__require("util"),core=require_cjs2(),NodeClient=class extends core.ServerRuntimeClient{constructor(options){core.applySdkMetadata(options,"node"),options.transportOptions={textEncoder:new util.TextEncoder,...options.transportOptions};let clientOptions={...options,platform:"node",runtime:{name:"node",version:global.process.version},serverName:options.serverName||global.process.env.SENTRY_NAME||os.hostname()};super(clientOptions)}};exports.NodeClient=NodeClient}});var require_base2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/base.js"(exports){var{_nullishCoalesce}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var http=__require("http");__require("https");var INTERNAL=Symbol("AgentBaseInternalState"),Agent=class extends http.Agent{constructor(opts){super(opts),this[INTERNAL]={}}isSecureEndpoint(options){if(options){if(typeof options.secureEndpoint=="boolean")return options.secureEndpoint;if(typeof options.protocol=="string")return options.protocol==="https:"}let{stack}=new Error;return typeof stack!="string"?!1:stack.split(`
|
|
31
|
+
`).some(l=>l.indexOf("(https.js:")!==-1||l.indexOf("node:https:")!==-1)}createSocket(req,options,cb){let connectOpts={...options,secureEndpoint:this.isSecureEndpoint(options)};Promise.resolve().then(()=>this.connect(req,connectOpts)).then(socket=>{if(socket instanceof http.Agent)return socket.addRequest(req,connectOpts);this[INTERNAL].currentSocket=socket,super.createSocket(req,options,cb)},cb)}createConnection(){let socket=this[INTERNAL].currentSocket;if(this[INTERNAL].currentSocket=void 0,!socket)throw new Error("No socket was returned in the `connect()` function");return socket}get defaultPort(){return _nullishCoalesce(this[INTERNAL].defaultPort,()=>this.protocol==="https:"?443:80)}set defaultPort(v){this[INTERNAL]&&(this[INTERNAL].defaultPort=v)}get protocol(){return _nullishCoalesce(this[INTERNAL].protocol,()=>this.isSecureEndpoint()?"https:":"http:")}set protocol(v){this[INTERNAL]&&(this[INTERNAL].protocol=v)}};exports.Agent=Agent}});var require_parse_proxy_response=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/parse-proxy-response.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function debug(...args){utils.logger.log("[https-proxy-agent:parse-proxy-response]",...args)}function parseProxyResponse(socket){return new Promise((resolve,reject)=>{let buffersLength=0,buffers=[];function read(){let b=socket.read();b?ondata(b):socket.once("readable",read)}function cleanup(){socket.removeListener("end",onend),socket.removeListener("error",onerror),socket.removeListener("readable",read)}function onend(){cleanup(),debug("onend"),reject(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(err){cleanup(),debug("onerror %o",err),reject(err)}function ondata(b){buffers.push(b),buffersLength+=b.length;let buffered=Buffer.concat(buffers,buffersLength),endOfHeaders=buffered.indexOf(`\r
|
|
32
|
+
\r
|
|
33
|
+
`);if(endOfHeaders===-1){debug("have not received end of HTTP headers yet..."),read();return}let headerParts=buffered.slice(0,endOfHeaders).toString("ascii").split(`\r
|
|
34
|
+
`),firstLine=headerParts.shift();if(!firstLine)return socket.destroy(),reject(new Error("No header received from proxy CONNECT response"));let firstLineParts=firstLine.split(" "),statusCode=+firstLineParts[1],statusText=firstLineParts.slice(2).join(" "),headers={};for(let header of headerParts){if(!header)continue;let firstColon=header.indexOf(":");if(firstColon===-1)return socket.destroy(),reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));let key=header.slice(0,firstColon).toLowerCase(),value=header.slice(firstColon+1).trimStart(),current=headers[key];typeof current=="string"?headers[key]=[current,value]:Array.isArray(current)?current.push(value):headers[key]=value}debug("got proxy server response: %o %o",firstLine,headers),cleanup(),resolve({connect:{statusCode,statusText,headers},buffered})}socket.on("error",onerror),socket.on("end",onend),read()})}exports.parseProxyResponse=parseProxyResponse}});var require_proxy=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/proxy/index.js"(exports){var{_nullishCoalesce,_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var net=__require("net"),tls=__require("tls"),url=__require("url"),utils=require_cjs(),base=require_base2(),parseProxyResponse=require_parse_proxy_response();function debug(...args){utils.logger.log("[https-proxy-agent]",...args)}var HttpsProxyAgent=class extends base.Agent{static __initStatic(){this.protocols=["http","https"]}constructor(proxy,opts){super(opts),this.options={},this.proxy=typeof proxy=="string"?new url.URL(proxy):proxy,this.proxyHeaders=_nullishCoalesce(_optionalChain([opts,"optionalAccess",_2=>_2.headers]),()=>({})),debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...opts?omit(opts,"headers"):null,host,port}}async connect(req,opts){let{proxy}=this;if(!opts.host)throw new TypeError('No "host" provided');let socket;if(proxy.protocol==="https:"){debug("Creating `tls.Socket`: %o",this.connectOpts);let servername=this.connectOpts.servername||this.connectOpts.host;socket=tls.connect({...this.connectOpts,servername:servername&&net.isIP(servername)?void 0:servername})}else debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts);let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},host=net.isIPv6(opts.host)?`[${opts.host}]`:opts.host,payload=`CONNECT ${host}:${opts.port} HTTP/1.1\r
|
|
35
|
+
`;if(proxy.username||proxy.password){let auth=`${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;headers["Proxy-Authorization"]=`Basic ${Buffer.from(auth).toString("base64")}`}headers.Host=`${host}:${opts.port}`,headers["Proxy-Connection"]||(headers["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let name of Object.keys(headers))payload+=`${name}: ${headers[name]}\r
|
|
36
|
+
`;let proxyResponsePromise=parseProxyResponse.parseProxyResponse(socket);socket.write(`${payload}\r
|
|
37
|
+
`);let{connect,buffered}=await proxyResponsePromise;if(req.emit("proxyConnect",connect),this.emit("proxyConnect",connect,req),connect.statusCode===200){if(req.once("socket",resume),opts.secureEndpoint){debug("Upgrading socket connection to TLS");let servername=opts.servername||opts.host;return tls.connect({...omit(opts,"host","path","port"),socket,servername:net.isIP(servername)?void 0:servername})}return socket}socket.destroy();let fakeSocket=new net.Socket({writable:!1});return fakeSocket.readable=!0,req.once("socket",s=>{debug("Replaying proxy buffer for failed request"),s.push(buffered),s.push(null)}),fakeSocket}};HttpsProxyAgent.__initStatic();function resume(socket){socket.resume()}function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}exports.HttpsProxyAgent=HttpsProxyAgent}});var require_http=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/transports/http.js"(exports){var{_nullishCoalesce}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var http=__require("http"),https=__require("https"),stream=__require("stream"),url=__require("url"),zlib=__require("zlib"),core=require_cjs2(),utils=require_cjs(),index=require_proxy(),GZIP_THRESHOLD=1024*32;function streamFromBody(body){return new stream.Readable({read(){this.push(body),this.push(null)}})}function makeNodeTransport(options){let urlSegments;try{urlSegments=new url.URL(options.url)}catch{return utils.consoleSandbox(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),core.createTransport(options,()=>Promise.resolve({}))}let isHttps=urlSegments.protocol==="https:",proxy=applyNoProxyOption(urlSegments,options.proxy||(isHttps?process.env.https_proxy:void 0)||process.env.http_proxy),nativeHttpModule=isHttps?https:http,keepAlive=options.keepAlive===void 0?!1:options.keepAlive,agent=proxy?new index.HttpsProxyAgent(proxy):new nativeHttpModule.Agent({keepAlive,maxSockets:30,timeout:2e3}),requestExecutor=createRequestExecutor(options,_nullishCoalesce(options.httpModule,()=>nativeHttpModule),agent);return core.createTransport(options,requestExecutor)}function applyNoProxyOption(transportUrlSegments,proxy){let{no_proxy}=process.env;if(!(no_proxy&&no_proxy.split(",").some(exemption=>transportUrlSegments.host.endsWith(exemption)||transportUrlSegments.hostname.endsWith(exemption))))return proxy}function createRequestExecutor(options,httpModule,agent){let{hostname,pathname,port,protocol,search}=new url.URL(options.url);return function(request){return new Promise((resolve,reject)=>{let body=streamFromBody(request.body),headers={...options.headers};request.body.length>GZIP_THRESHOLD&&(headers["content-encoding"]="gzip",body=body.pipe(zlib.createGzip()));let req=httpModule.request({method:"POST",agent,headers,hostname,path:`${pathname}${search}`,port,protocol,ca:options.caCerts},res=>{res.on("data",()=>{}),res.on("end",()=>{}),res.setEncoding("utf8");let retryAfterHeader=_nullishCoalesce(res.headers["retry-after"],()=>null),rateLimitsHeader=_nullishCoalesce(res.headers["x-sentry-rate-limits"],()=>null);resolve({statusCode:res.statusCode,headers:{"retry-after":retryAfterHeader,"x-sentry-rate-limits":Array.isArray(rateLimitsHeader)?rateLimitsHeader[0]:rateLimitsHeader}})});req.on("error",reject),body.pipe(req)})}}exports.makeNodeTransport=makeNodeTransport}});var require_nodeVersion=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/nodeVersion.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),NODE_VERSION=utils.parseSemver(process.versions.node);exports.NODE_VERSION=NODE_VERSION}});var require_domain=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/domain.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var domain=__require("domain"),core=require_cjs2();function getActiveDomain(){return domain.active}function getCurrentHub(){let activeDomain=getActiveDomain();if(activeDomain)return core.ensureHubOnCarrier(activeDomain),core.getHubFromCarrier(activeDomain)}function createNewHub(parent){let carrier={};return core.ensureHubOnCarrier(carrier,parent),core.getHubFromCarrier(carrier)}function runWithAsyncContext(callback,options){let activeDomain=getActiveDomain();if(activeDomain&&_optionalChain([options,"optionalAccess",_=>_.reuseExisting]))return callback();let local=domain.create(),parentHub=activeDomain?core.getHubFromCarrier(activeDomain):void 0,newHub=createNewHub(parentHub);return core.setHubOnCarrier(local,newHub),local.bind(()=>callback())()}function setDomainAsyncContextStrategy(){core.setAsyncContextStrategy({getCurrentHub,runWithAsyncContext})}exports.setDomainAsyncContextStrategy=setDomainAsyncContextStrategy}});var require_hooks=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/hooks.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),async_hooks=__require("async_hooks"),asyncStorage;function setHooksAsyncContextStrategy(){asyncStorage||(asyncStorage=new async_hooks.AsyncLocalStorage);function getCurrentHub(){return asyncStorage.getStore()}function createNewHub(parent){let carrier={};return core.ensureHubOnCarrier(carrier,parent),core.getHubFromCarrier(carrier)}function runWithAsyncContext(callback,options){let existingHub=getCurrentHub();if(existingHub&&_optionalChain([options,"optionalAccess",_=>_.reuseExisting]))return callback();let newHub=createNewHub(existingHub);return asyncStorage.run(newHub,()=>callback())}core.setAsyncContextStrategy({getCurrentHub,runWithAsyncContext})}exports.setHooksAsyncContextStrategy=setHooksAsyncContextStrategy}});var require_async=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/async/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var nodeVersion=require_nodeVersion(),domain=require_domain(),hooks=require_hooks();function setNodeAsyncContextStrategy(){nodeVersion.NODE_VERSION.major>=14?hooks.setHooksAsyncContextStrategy():domain.setDomainAsyncContextStrategy()}exports.setNodeAsyncContextStrategy=setNodeAsyncContextStrategy}});var require_console2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/console.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var util=__require("util"),core=require_cjs2(),utils=require_cjs(),INTEGRATION_NAME="Console",_consoleIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){},setup(client){utils.addConsoleInstrumentationHandler(({args,level})=>{core.getClient()===client&&core.addBreadcrumb({category:"console",level:utils.severityLevelFromString(level),message:util.format.apply(void 0,args)},{input:[...args],level})})}}),consoleIntegration=core.defineIntegration(_consoleIntegration),Console=core.convertIntegrationFnToClass(INTEGRATION_NAME,consoleIntegration);exports.Console=Console;exports.consoleIntegration=consoleIntegration}});var require_context=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/context.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var child_process=__require("child_process"),fs=__require("fs"),os=__require("os"),path=__require("path"),util=__require("util"),core=require_cjs2(),readFileAsync=util.promisify(fs.readFile),readDirAsync=util.promisify(fs.readdir),INTEGRATION_NAME="Context",_nodeContextIntegration=(options={})=>{let cachedContext,_options={app:!0,os:!0,device:!0,culture:!0,cloudResource:!0,...options};async function addContext(event){cachedContext===void 0&&(cachedContext=_getContexts());let updatedContext=_updateContext(await cachedContext);return event.contexts={...event.contexts,app:{...updatedContext.app,..._optionalChain([event,"access",_=>_.contexts,"optionalAccess",_2=>_2.app])},os:{...updatedContext.os,..._optionalChain([event,"access",_3=>_3.contexts,"optionalAccess",_4=>_4.os])},device:{...updatedContext.device,..._optionalChain([event,"access",_5=>_5.contexts,"optionalAccess",_6=>_6.device])},culture:{...updatedContext.culture,..._optionalChain([event,"access",_7=>_7.contexts,"optionalAccess",_8=>_8.culture])},cloud_resource:{...updatedContext.cloud_resource,..._optionalChain([event,"access",_9=>_9.contexts,"optionalAccess",_10=>_10.cloud_resource])}},event}async function _getContexts(){let contexts={};if(_options.os&&(contexts.os=await getOsContext()),_options.app&&(contexts.app=getAppContext()),_options.device&&(contexts.device=getDeviceContext(_options.device)),_options.culture){let culture=getCultureContext();culture&&(contexts.culture=culture)}return _options.cloudResource&&(contexts.cloud_resource=getCloudResourceContext()),contexts}return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event){return addContext(event)}}},nodeContextIntegration=core.defineIntegration(_nodeContextIntegration),Context=core.convertIntegrationFnToClass(INTEGRATION_NAME,nodeContextIntegration);function _updateContext(contexts){return _optionalChain([contexts,"optionalAccess",_11=>_11.app,"optionalAccess",_12=>_12.app_memory])&&(contexts.app.app_memory=process.memoryUsage().rss),_optionalChain([contexts,"optionalAccess",_13=>_13.device,"optionalAccess",_14=>_14.free_memory])&&(contexts.device.free_memory=os.freemem()),contexts}async function getOsContext(){let platformId=os.platform();switch(platformId){case"darwin":return getDarwinInfo();case"linux":return getLinuxInfo();default:return{name:PLATFORM_NAMES[platformId]||platformId,version:os.release()}}}function getCultureContext(){try{if(typeof process.versions.icu!="string")return;let january=new Date(9e8);if(new Intl.DateTimeFormat("es",{month:"long"}).format(january)==="enero"){let options=Intl.DateTimeFormat().resolvedOptions();return{locale:options.locale,timezone:options.timeZone}}}catch{}}function getAppContext(){let app_memory=process.memoryUsage().rss;return{app_start_time:new Date(Date.now()-process.uptime()*1e3).toISOString(),app_memory}}function getDeviceContext(deviceOpt){let device={},uptime;try{uptime=os.uptime&&os.uptime()}catch{}if(typeof uptime=="number"&&(device.boot_time=new Date(Date.now()-uptime*1e3).toISOString()),device.arch=os.arch(),(deviceOpt===!0||deviceOpt.memory)&&(device.memory_size=os.totalmem(),device.free_memory=os.freemem()),deviceOpt===!0||deviceOpt.cpu){let cpuInfo=os.cpus();if(cpuInfo&&cpuInfo.length){let firstCpu=cpuInfo[0];device.processor_count=cpuInfo.length,device.cpu_description=firstCpu.model,device.processor_frequency=firstCpu.speed}}return device}var PLATFORM_NAMES={aix:"IBM AIX",freebsd:"FreeBSD",openbsd:"OpenBSD",sunos:"SunOS",win32:"Windows"},LINUX_DISTROS=[{name:"fedora-release",distros:["Fedora"]},{name:"redhat-release",distros:["Red Hat Linux","Centos"]},{name:"redhat_version",distros:["Red Hat Linux"]},{name:"SuSE-release",distros:["SUSE Linux"]},{name:"lsb-release",distros:["Ubuntu Linux","Arch Linux"]},{name:"debian_version",distros:["Debian"]},{name:"debian_release",distros:["Debian"]},{name:"arch-release",distros:["Arch Linux"]},{name:"gentoo-release",distros:["Gentoo Linux"]},{name:"novell-release",distros:["SUSE Linux"]},{name:"alpine-release",distros:["Alpine Linux"]}],LINUX_VERSIONS={alpine:content=>content,arch:content=>matchFirst(/distrib_release=(.*)/,content),centos:content=>matchFirst(/release ([^ ]+)/,content),debian:content=>content,fedora:content=>matchFirst(/release (..)/,content),mint:content=>matchFirst(/distrib_release=(.*)/,content),red:content=>matchFirst(/release ([^ ]+)/,content),suse:content=>matchFirst(/VERSION = (.*)\n/,content),ubuntu:content=>matchFirst(/distrib_release=(.*)/,content)};function matchFirst(regex,text){let match=regex.exec(text);return match?match[1]:void 0}async function getDarwinInfo(){let darwinInfo={kernel_version:os.release(),name:"Mac OS X",version:`10.${Number(os.release().split(".")[0])-4}`};try{let output=await new Promise((resolve,reject)=>{child_process.execFile("/usr/bin/sw_vers",(error,stdout)=>{if(error){reject(error);return}resolve(stdout)})});darwinInfo.name=matchFirst(/^ProductName:\s+(.*)$/m,output),darwinInfo.version=matchFirst(/^ProductVersion:\s+(.*)$/m,output),darwinInfo.build=matchFirst(/^BuildVersion:\s+(.*)$/m,output)}catch{}return darwinInfo}function getLinuxDistroId(name){return name.split(" ")[0].toLowerCase()}async function getLinuxInfo(){let linuxInfo={kernel_version:os.release(),name:"Linux"};try{let etcFiles=await readDirAsync("/etc"),distroFile=LINUX_DISTROS.find(file=>etcFiles.includes(file.name));if(!distroFile)return linuxInfo;let distroPath=path.join("/etc",distroFile.name),contents=(await readFileAsync(distroPath,{encoding:"utf-8"})).toLowerCase(),{distros}=distroFile;linuxInfo.name=distros.find(d=>contents.indexOf(getLinuxDistroId(d))>=0)||distros[0];let id=getLinuxDistroId(linuxInfo.name);linuxInfo.version=LINUX_VERSIONS[id](contents)}catch{}return linuxInfo}function getCloudResourceContext(){return process.env.VERCEL?{"cloud.provider":"vercel","cloud.region":process.env.VERCEL_REGION}:process.env.AWS_REGION?{"cloud.provider":"aws","cloud.region":process.env.AWS_REGION,"cloud.platform":process.env.AWS_EXECUTION_ENV}:process.env.GCP_PROJECT?{"cloud.provider":"gcp"}:process.env.ALIYUN_REGION_ID?{"cloud.provider":"alibaba_cloud","cloud.region":process.env.ALIYUN_REGION_ID}:process.env.WEBSITE_SITE_NAME&&process.env.REGION_NAME?{"cloud.provider":"azure","cloud.region":process.env.REGION_NAME}:process.env.IBM_CLOUD_REGION?{"cloud.provider":"ibm_cloud","cloud.region":process.env.IBM_CLOUD_REGION}:process.env.TENCENTCLOUD_REGION?{"cloud.provider":"tencent_cloud","cloud.region":process.env.TENCENTCLOUD_REGION,"cloud.account.id":process.env.TENCENTCLOUD_APPID,"cloud.availability_zone":process.env.TENCENTCLOUD_ZONE}:process.env.NETLIFY?{"cloud.provider":"netlify"}:process.env.FLY_REGION?{"cloud.provider":"fly.io","cloud.region":process.env.FLY_REGION}:process.env.DYNO?{"cloud.provider":"heroku"}:void 0}exports.Context=Context;exports.getDeviceContext=getDeviceContext;exports.nodeContextIntegration=nodeContextIntegration;exports.readDirAsync=readDirAsync;exports.readFileAsync=readFileAsync}});var require_contextlines=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/contextlines.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var fs=__require("fs"),core=require_cjs2(),utils=require_cjs(),FILE_CONTENT_CACHE=new utils.LRUMap(100),DEFAULT_LINES_OF_CONTEXT=7,INTEGRATION_NAME="ContextLines";function readTextFileAsync(path){return new Promise((resolve,reject)=>{fs.readFile(path,"utf8",(err,data)=>{err?reject(err):resolve(data)})})}var _contextLinesIntegration=(options={})=>{let contextLines=options.frameContextLines!==void 0?options.frameContextLines:DEFAULT_LINES_OF_CONTEXT;return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event){return addSourceContext(event,contextLines)}}},contextLinesIntegration=core.defineIntegration(_contextLinesIntegration),ContextLines=core.convertIntegrationFnToClass(INTEGRATION_NAME,contextLinesIntegration);async function addSourceContext(event,contextLines){let enqueuedReadSourceFileTasks={},readSourceFileTasks=[];if(contextLines>0&&_optionalChain([event,"access",_2=>_2.exception,"optionalAccess",_3=>_3.values])){for(let exception of event.exception.values)if(_optionalChain([exception,"access",_4=>_4.stacktrace,"optionalAccess",_5=>_5.frames]))for(let i=exception.stacktrace.frames.length-1;i>=0;i--){let frame=exception.stacktrace.frames[i];frame.filename&&!enqueuedReadSourceFileTasks[frame.filename]&&!FILE_CONTENT_CACHE.get(frame.filename)&&(readSourceFileTasks.push(_readSourceFile(frame.filename)),enqueuedReadSourceFileTasks[frame.filename]=1)}}if(readSourceFileTasks.length>0&&await Promise.all(readSourceFileTasks),contextLines>0&&_optionalChain([event,"access",_6=>_6.exception,"optionalAccess",_7=>_7.values]))for(let exception of event.exception.values)exception.stacktrace&&exception.stacktrace.frames&&await addSourceContextToFrames(exception.stacktrace.frames,contextLines);return event}function addSourceContextToFrames(frames,contextLines){for(let frame of frames)if(frame.filename&&frame.context_line===void 0){let sourceFileLines=FILE_CONTENT_CACHE.get(frame.filename);if(sourceFileLines)try{utils.addContextToFrame(sourceFileLines,frame,contextLines)}catch{}}}async function _readSourceFile(filename){let cachedFile=FILE_CONTENT_CACHE.get(filename);if(cachedFile===null)return null;if(cachedFile!==void 0)return cachedFile;let content=null;try{content=(await readTextFileAsync(filename)).split(`
|
|
38
|
+
`)}catch{}return FILE_CONTENT_CACHE.set(filename,content),content}exports.ContextLines=ContextLines;exports.contextLinesIntegration=contextLinesIntegration}});var require_debug_build4=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/debug-build.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEBUG_BUILD=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;exports.DEBUG_BUILD=DEBUG_BUILD}});var require_http2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/http.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var url=__require("url"),nodeVersion=require_nodeVersion();function extractRawUrl(requestOptions){let{protocol,hostname,port}=parseRequestOptions(requestOptions),path=requestOptions.path?requestOptions.path:"/";return`${protocol}//${hostname}${port}${path}`}function extractUrl(requestOptions){let{protocol,hostname,port}=parseRequestOptions(requestOptions),path=requestOptions.pathname||"/",authority=requestOptions.auth?redactAuthority(requestOptions.auth):"";return`${protocol}//${authority}${hostname}${port}${path}`}function redactAuthority(auth){let[user,password]=auth.split(":");return`${user?"[Filtered]":""}:${password?"[Filtered]":""}@`}function cleanSpanDescription(description,requestOptions,request){if(!description)return description;let[method,requestUrl]=description.split(" ");return requestOptions.host&&!requestOptions.protocol&&(requestOptions.protocol=_optionalChain([request,"optionalAccess",_=>_.agent,"optionalAccess",_2=>_2.protocol]),requestUrl=extractUrl(requestOptions)),_optionalChain([requestUrl,"optionalAccess",_3=>_3.startsWith,"call",_4=>_4("///")])&&(requestUrl=requestUrl.slice(2)),`${method} ${requestUrl}`}function urlToOptions(url2){let options={protocol:url2.protocol,hostname:typeof url2.hostname=="string"&&url2.hostname.startsWith("[")?url2.hostname.slice(1,-1):url2.hostname,hash:url2.hash,search:url2.search,pathname:url2.pathname,path:`${url2.pathname||""}${url2.search||""}`,href:url2.href};return url2.port!==""&&(options.port=Number(url2.port)),(url2.username||url2.password)&&(options.auth=`${url2.username}:${url2.password}`),options}function normalizeRequestArgs(httpModule,requestArgs){let callback,requestOptions;if(typeof requestArgs[requestArgs.length-1]=="function"&&(callback=requestArgs.pop()),typeof requestArgs[0]=="string")requestOptions=urlToOptions(new url.URL(requestArgs[0]));else if(requestArgs[0]instanceof url.URL)requestOptions=urlToOptions(requestArgs[0]);else{requestOptions=requestArgs[0];try{let parsed=new url.URL(requestOptions.path||"",`${requestOptions.protocol||"http:"}//${requestOptions.hostname}`);requestOptions={pathname:parsed.pathname,search:parsed.search,hash:parsed.hash,...requestOptions}}catch{}}return requestArgs.length===2&&(requestOptions={...requestOptions,...requestArgs[1]}),requestOptions.protocol===void 0&&(nodeVersion.NODE_VERSION.major>8?requestOptions.protocol=_optionalChain([_optionalChain([httpModule,"optionalAccess",_5=>_5.globalAgent]),"optionalAccess",_6=>_6.protocol])||_optionalChain([requestOptions.agent,"optionalAccess",_7=>_7.protocol])||_optionalChain([requestOptions._defaultAgent,"optionalAccess",_8=>_8.protocol]):requestOptions.protocol=_optionalChain([requestOptions.agent,"optionalAccess",_9=>_9.protocol])||_optionalChain([requestOptions._defaultAgent,"optionalAccess",_10=>_10.protocol])||_optionalChain([_optionalChain([httpModule,"optionalAccess",_11=>_11.globalAgent]),"optionalAccess",_12=>_12.protocol])),callback?[requestOptions,callback]:[requestOptions]}function parseRequestOptions(requestOptions){let protocol=requestOptions.protocol||"",hostname=requestOptions.hostname||requestOptions.host||"",port=!requestOptions.port||requestOptions.port===80||requestOptions.port===443||/^(.*):(\d+)$/.test(hostname)?"":`:${requestOptions.port}`;return{protocol,hostname,port}}exports.cleanSpanDescription=cleanSpanDescription;exports.extractRawUrl=extractRawUrl;exports.extractUrl=extractUrl;exports.normalizeRequestArgs=normalizeRequestArgs;exports.urlToOptions=urlToOptions}});var require_http3=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/http.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build4(),nodeVersion=require_nodeVersion(),http=require_http2(),_httpIntegration=(options={})=>{let{breadcrumbs,tracing,shouldCreateSpanForRequest}=options,convertedOptions={breadcrumbs,tracing:tracing===!1?!1:utils.dropUndefinedKeys({enableIfHasTracingEnabled:tracing===!0?void 0:!0,shouldCreateSpanForRequest})};return new Http(convertedOptions)},httpIntegration=core.defineIntegration(_httpIntegration),Http=class _Http{static __initStatic(){this.id="Http"}__init(){this.name=_Http.id}constructor(options={}){_Http.prototype.__init.call(this),this._breadcrumbs=typeof options.breadcrumbs>"u"?!0:options.breadcrumbs,this._tracing=options.tracing?options.tracing===!0?{}:options.tracing:void 0}setupOnce(_addGlobalEventProcessor,setupOnceGetCurrentHub){let clientOptions=_optionalChain([setupOnceGetCurrentHub,"call",_=>_(),"access",_2=>_2.getClient,"call",_3=>_3(),"optionalAccess",_4=>_4.getOptions,"call",_5=>_5()]),shouldCreateSpans=_shouldCreateSpans(this._tracing,clientOptions);if(!this._breadcrumbs&&!shouldCreateSpans)return;if(clientOptions&&clientOptions.instrumenter!=="sentry"){debugBuild.DEBUG_BUILD&&utils.logger.log("HTTP Integration is skipped because of instrumenter configuration.");return}let shouldCreateSpanForRequest=_getShouldCreateSpanForRequest(shouldCreateSpans,this._tracing,clientOptions),tracePropagationTargets=_optionalChain([clientOptions,"optionalAccess",_6=>_6.tracePropagationTargets])||_optionalChain([this,"access",_7=>_7._tracing,"optionalAccess",_8=>_8.tracePropagationTargets]),httpModule=__require("http"),wrappedHttpHandlerMaker=_createWrappedRequestMethodFactory(httpModule,this._breadcrumbs,shouldCreateSpanForRequest,tracePropagationTargets);if(utils.fill(httpModule,"get",wrappedHttpHandlerMaker),utils.fill(httpModule,"request",wrappedHttpHandlerMaker),nodeVersion.NODE_VERSION.major>8){let httpsModule=__require("https"),wrappedHttpsHandlerMaker=_createWrappedRequestMethodFactory(httpsModule,this._breadcrumbs,shouldCreateSpanForRequest,tracePropagationTargets);utils.fill(httpsModule,"get",wrappedHttpsHandlerMaker),utils.fill(httpsModule,"request",wrappedHttpsHandlerMaker)}}};Http.__initStatic();function _createWrappedRequestMethodFactory(httpModule,breadcrumbsEnabled,shouldCreateSpanForRequest,tracePropagationTargets){let createSpanUrlMap=new utils.LRUMap(100),headersUrlMap=new utils.LRUMap(100),shouldCreateSpan=url=>{if(shouldCreateSpanForRequest===void 0)return!0;let cachedDecision=createSpanUrlMap.get(url);if(cachedDecision!==void 0)return cachedDecision;let decision=shouldCreateSpanForRequest(url);return createSpanUrlMap.set(url,decision),decision},shouldAttachTraceData=url=>{if(tracePropagationTargets===void 0)return!0;let cachedDecision=headersUrlMap.get(url);if(cachedDecision!==void 0)return cachedDecision;let decision=utils.stringMatchesSomePattern(url,tracePropagationTargets);return headersUrlMap.set(url,decision),decision};function addRequestBreadcrumb(event,requestSpanData,req,res){core.getCurrentHub().getIntegration(Http)&&core.addBreadcrumb({category:"http",data:{status_code:res&&res.statusCode,...requestSpanData},type:"http"},{event,request:req,response:res})}return function(originalRequestMethod){return function(...args){let requestArgs=http.normalizeRequestArgs(httpModule,args),requestOptions=requestArgs[0],rawRequestUrl=http.extractRawUrl(requestOptions),requestUrl=http.extractUrl(requestOptions),client=core.getClient();if(core.isSentryRequestUrl(requestUrl,client))return originalRequestMethod.apply(httpModule,requestArgs);let scope=core.getCurrentScope(),isolationScope=core.getIsolationScope(),parentSpan=core.getActiveSpan(),data=getRequestSpanData(requestUrl,requestOptions),requestSpan=shouldCreateSpan(rawRequestUrl)?_optionalChain([parentSpan,"optionalAccess",_9=>_9.startChild,"call",_10=>_10({op:"http.client",origin:"auto.http.node.http",description:`${data["http.method"]} ${data.url}`,data})]):void 0;if(client&&shouldAttachTraceData(rawRequestUrl)){let{traceId,spanId,sampled,dsc}={...isolationScope.getPropagationContext(),...scope.getPropagationContext()},sentryTraceHeader=requestSpan?core.spanToTraceHeader(requestSpan):utils.generateSentryTraceHeader(traceId,spanId,sampled),sentryBaggageHeader=utils.dynamicSamplingContextToSentryBaggageHeader(dsc||(requestSpan?core.getDynamicSamplingContextFromSpan(requestSpan):core.getDynamicSamplingContextFromClient(traceId,client,scope)));addHeadersToRequestOptions(requestOptions,requestUrl,sentryTraceHeader,sentryBaggageHeader)}else debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Not adding sentry-trace header to outgoing request (${requestUrl}) due to mismatching tracePropagationTargets option.`);return originalRequestMethod.apply(httpModule,requestArgs).once("response",function(res){let req=this;breadcrumbsEnabled&&addRequestBreadcrumb("response",data,req,res),requestSpan&&(res.statusCode&&core.setHttpStatus(requestSpan,res.statusCode),requestSpan.updateName(http.cleanSpanDescription(core.spanToJSON(requestSpan).description||"",requestOptions,req)||""),requestSpan.end())}).once("error",function(){let req=this;breadcrumbsEnabled&&addRequestBreadcrumb("error",data,req),requestSpan&&(core.setHttpStatus(requestSpan,500),requestSpan.updateName(http.cleanSpanDescription(core.spanToJSON(requestSpan).description||"",requestOptions,req)||""),requestSpan.end())})}}}function addHeadersToRequestOptions(requestOptions,requestUrl,sentryTraceHeader,sentryBaggageHeader){(requestOptions.headers||{})["sentry-trace"]||(debugBuild.DEBUG_BUILD&&utils.logger.log(`[Tracing] Adding sentry-trace header ${sentryTraceHeader} to outgoing request to "${requestUrl}": `),requestOptions.headers={...requestOptions.headers,"sentry-trace":sentryTraceHeader,...sentryBaggageHeader&&sentryBaggageHeader.length>0&&{baggage:normalizeBaggageHeader(requestOptions,sentryBaggageHeader)}})}function getRequestSpanData(requestUrl,requestOptions){let method=requestOptions.method||"GET",data={url:requestUrl,"http.method":method};return requestOptions.hash&&(data["http.fragment"]=requestOptions.hash.substring(1)),requestOptions.search&&(data["http.query"]=requestOptions.search.substring(1)),data}function normalizeBaggageHeader(requestOptions,sentryBaggageHeader){if(!requestOptions.headers||!requestOptions.headers.baggage)return sentryBaggageHeader;if(sentryBaggageHeader){if(Array.isArray(requestOptions.headers.baggage))return[...requestOptions.headers.baggage,sentryBaggageHeader]}else return requestOptions.headers.baggage;return[requestOptions.headers.baggage,sentryBaggageHeader]}function _shouldCreateSpans(tracingOptions,clientOptions){return tracingOptions===void 0?!1:tracingOptions.enableIfHasTracingEnabled?core.hasTracingEnabled(clientOptions):!0}function _getShouldCreateSpanForRequest(shouldCreateSpans,tracingOptions,clientOptions){return shouldCreateSpans?_optionalChain([tracingOptions,"optionalAccess",_11=>_11.shouldCreateSpanForRequest])||_optionalChain([clientOptions,"optionalAccess",_12=>_12.shouldCreateSpanForRequest]):()=>!1}exports.Http=Http;exports._getShouldCreateSpanForRequest=_getShouldCreateSpanForRequest;exports._shouldCreateSpans=_shouldCreateSpans;exports.httpIntegration=httpIntegration}});var require_common=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/common.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});function createRateLimiter(maxPerSecond,enable,disable){let count=0,retrySeconds=5,disabledTimeout=0;return setInterval(()=>{disabledTimeout===0?count>maxPerSecond&&(retrySeconds*=2,disable(retrySeconds),retrySeconds>86400&&(retrySeconds=86400),disabledTimeout=retrySeconds):(disabledTimeout-=1,disabledTimeout===0&&enable()),count=0},1e3).unref(),()=>{count+=1}}function isAnonymous(name){return name!==void 0&&(name.length===0||name==="?"||name==="<anonymous>")}function functionNamesMatch(a,b){return a===b||isAnonymous(a)&&isAnonymous(b)}function hashFrames(frames){if(frames!==void 0)return frames.slice(-10).reduce((acc,frame)=>`${acc},${frame.function},${frame.lineno},${frame.colno}`,"")}function hashFromStack(stackParser,stack){if(stack!==void 0)return hashFrames(stackParser(stack,1))}exports.createRateLimiter=createRateLimiter;exports.functionNamesMatch=functionNamesMatch;exports.hashFrames=hashFrames;exports.hashFromStack=hashFromStack;exports.isAnonymous=isAnonymous}});var require_local_variables_sync=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/local-variables-sync.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),nodeVersion=require_nodeVersion(),common=require_common();function createCallbackList(complete){let callbacks=[],completedCalled=!1;function checkedComplete(result){callbacks=[],!completedCalled&&(completedCalled=!0,complete(result))}callbacks.push(checkedComplete);function add(fn){callbacks.push(fn)}function next(result){let popped=callbacks.pop()||checkedComplete;try{popped(result)}catch{checkedComplete(result)}}return{add,next}}var AsyncSession=class{constructor(){let{Session}=__require("inspector");this._session=new Session}configureAndConnect(onPause,captureAll){this._session.connect(),this._session.on("Debugger.paused",event=>{onPause(event,()=>{this._session.post("Debugger.resume")})}),this._session.post("Debugger.enable"),this._session.post("Debugger.setPauseOnExceptions",{state:captureAll?"all":"uncaught"})}setPauseOnExceptions(captureAll){this._session.post("Debugger.setPauseOnExceptions",{state:captureAll?"all":"uncaught"})}getLocalVariables(objectId,complete){this._getProperties(objectId,props=>{let{add,next}=createCallbackList(complete);for(let prop of props)if(_optionalChain([prop,"optionalAccess",_2=>_2.value,"optionalAccess",_3=>_3.objectId])&&_optionalChain([prop,"optionalAccess",_4=>_4.value,"access",_5=>_5.className])==="Array"){let id=prop.value.objectId;add(vars=>this._unrollArray(id,prop.name,vars,next))}else if(_optionalChain([prop,"optionalAccess",_6=>_6.value,"optionalAccess",_7=>_7.objectId])&&_optionalChain([prop,"optionalAccess",_8=>_8.value,"optionalAccess",_9=>_9.className])==="Object"){let id=prop.value.objectId;add(vars=>this._unrollObject(id,prop.name,vars,next))}else(_optionalChain([prop,"optionalAccess",_10=>_10.value,"optionalAccess",_11=>_11.value])!=null||_optionalChain([prop,"optionalAccess",_12=>_12.value,"optionalAccess",_13=>_13.description])!=null)&&add(vars=>this._unrollOther(prop,vars,next));next({})})}_getProperties(objectId,next){this._session.post("Runtime.getProperties",{objectId,ownProperties:!0},(err,params)=>{next(err?[]:params.result)})}_unrollArray(objectId,name,vars,next){this._getProperties(objectId,props=>{vars[name]=props.filter(v=>v.name!=="length"&&!isNaN(parseInt(v.name,10))).sort((a,b)=>parseInt(a.name,10)-parseInt(b.name,10)).map(v=>_optionalChain([v,"optionalAccess",_14=>_14.value,"optionalAccess",_15=>_15.value])),next(vars)})}_unrollObject(objectId,name,vars,next){this._getProperties(objectId,props=>{vars[name]=props.map(v=>[v.name,_optionalChain([v,"optionalAccess",_16=>_16.value,"optionalAccess",_17=>_17.value])]).reduce((obj,[key,val])=>(obj[key]=val,obj),{}),next(vars)})}_unrollOther(prop,vars,next){_optionalChain([prop,"optionalAccess",_18=>_18.value,"optionalAccess",_19=>_19.value])!=null?vars[prop.name]=prop.value.value:_optionalChain([prop,"optionalAccess",_20=>_20.value,"optionalAccess",_21=>_21.description])!=null&&_optionalChain([prop,"optionalAccess",_22=>_22.value,"optionalAccess",_23=>_23.type])!=="function"&&(vars[prop.name]=`<${prop.value.description}>`),next(vars)}};function tryNewAsyncSession(){try{return new AsyncSession}catch{return}}var INTEGRATION_NAME="LocalVariables",_localVariablesSyncIntegration=(options={},session=tryNewAsyncSession())=>{let cachedFrames=new utils.LRUMap(20),rateLimiter,shouldProcessEvent=!1;function handlePaused(stackParser,{params:{reason,data,callFrames}},complete){if(reason!=="exception"&&reason!=="promiseRejection"){complete();return}_optionalChain([rateLimiter,"optionalCall",_24=>_24()]);let exceptionHash=common.hashFromStack(stackParser,_optionalChain([data,"optionalAccess",_25=>_25.description]));if(exceptionHash==null){complete();return}let{add,next}=createCallbackList(frames=>{cachedFrames.set(exceptionHash,frames),complete()});for(let i=0;i<Math.min(callFrames.length,5);i++){let{scopeChain,functionName,this:obj}=callFrames[i],localScope=scopeChain.find(scope=>scope.type==="local"),fn=obj.className==="global"||!obj.className?functionName:`${obj.className}.${functionName}`;if(_optionalChain([localScope,"optionalAccess",_26=>_26.object,"access",_27=>_27.objectId])===void 0)add(frames=>{frames[i]={function:fn},next(frames)});else{let id=localScope.object.objectId;add(frames=>_optionalChain([session,"optionalAccess",_28=>_28.getLocalVariables,"call",_29=>_29(id,vars=>{frames[i]={function:fn,vars},next(frames)})]))}}next([])}function addLocalVariablesToException(exception){let hash=common.hashFrames(_optionalChain([exception,"optionalAccess",_30=>_30.stacktrace,"optionalAccess",_31=>_31.frames]));if(hash===void 0)return;let cachedFrame=cachedFrames.remove(hash);if(cachedFrame===void 0)return;let frames=(_optionalChain([exception,"access",_32=>_32.stacktrace,"optionalAccess",_33=>_33.frames])||[]).filter(frame=>frame.function!=="new Promise");for(let i=0;i<frames.length;i++){let frameIndex=frames.length-i-1;if(!frames[frameIndex]||!cachedFrame[i])break;cachedFrame[i].vars===void 0||frames[frameIndex].in_app===!1||!common.functionNamesMatch(frames[frameIndex].function,cachedFrame[i].function)||(frames[frameIndex].vars=cachedFrame[i].vars)}}function addLocalVariablesToEvent(event){for(let exception of _optionalChain([event,"optionalAccess",_34=>_34.exception,"optionalAccess",_35=>_35.values])||[])addLocalVariablesToException(exception);return event}return{name:INTEGRATION_NAME,setupOnce(){let client=core.getClient(),clientOptions=_optionalChain([client,"optionalAccess",_36=>_36.getOptions,"call",_37=>_37()]);if(session&&_optionalChain([clientOptions,"optionalAccess",_38=>_38.includeLocalVariables])){if(nodeVersion.NODE_VERSION.major<18){utils.logger.log("The `LocalVariables` integration is only supported on Node >= v18.");return}let captureAll=options.captureAllExceptions!==!1;if(session.configureAndConnect((ev,complete)=>handlePaused(clientOptions.stackParser,ev,complete),captureAll),captureAll){let max=options.maxExceptionsPerSecond||50;rateLimiter=common.createRateLimiter(max,()=>{utils.logger.log("Local variables rate-limit lifted."),_optionalChain([session,"optionalAccess",_39=>_39.setPauseOnExceptions,"call",_40=>_40(!0)])},seconds=>{utils.logger.log(`Local variables rate-limit exceeded. Disabling capturing of caught exceptions for ${seconds} seconds.`),_optionalChain([session,"optionalAccess",_41=>_41.setPauseOnExceptions,"call",_42=>_42(!1)])})}shouldProcessEvent=!0}},processEvent(event){return shouldProcessEvent?addLocalVariablesToEvent(event):event},_getCachedFramesCount(){return cachedFrames.size},_getFirstCachedFrame(){return cachedFrames.values()[0]}}},localVariablesSyncIntegration=core.defineIntegration(_localVariablesSyncIntegration),LocalVariablesSync=core.convertIntegrationFnToClass(INTEGRATION_NAME,localVariablesSyncIntegration);exports.LocalVariablesSync=LocalVariablesSync;exports.createCallbackList=createCallbackList;exports.localVariablesSyncIntegration=localVariablesSyncIntegration}});var require_local_variables=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/local-variables/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var localVariablesSync=require_local_variables_sync(),LocalVariables=localVariablesSync.LocalVariablesSync,localVariablesIntegration=localVariablesSync.localVariablesSyncIntegration;exports.LocalVariables=LocalVariables;exports.localVariablesIntegration=localVariablesIntegration}});var require_modules=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/modules.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var fs=__require("fs"),path=__require("path"),core=require_cjs2(),moduleCache,INTEGRATION_NAME="Modules";function getPaths(){try{return __require.cache?Object.keys(__require.cache):[]}catch{return[]}}function collectModules(){let mainPaths=__require.main&&__require.main.paths||[],paths=getPaths(),infos={},seen={};return paths.forEach(path$1=>{let dir=path$1,updir=()=>{let orig=dir;if(dir=path.dirname(orig),!dir||orig===dir||seen[orig])return;if(mainPaths.indexOf(dir)<0)return updir();let pkgfile=path.join(orig,"package.json");if(seen[orig]=!0,!fs.existsSync(pkgfile))return updir();try{let info=JSON.parse(fs.readFileSync(pkgfile,"utf8"));infos[info.name]=info.version}catch{}};updir()}),infos}function _getModules(){return moduleCache||(moduleCache=collectModules()),moduleCache}var _modulesIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){},processEvent(event){return event.modules={...event.modules,..._getModules()},event}}),modulesIntegration=core.defineIntegration(_modulesIntegration),Modules=core.convertIntegrationFnToClass(INTEGRATION_NAME,modulesIntegration);exports.Modules=Modules;exports.modulesIntegration=modulesIntegration}});var require_errorhandling=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/utils/errorhandling.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build4(),DEFAULT_SHUTDOWN_TIMEOUT=2e3;function logAndExitProcess(error){utils.consoleSandbox(()=>{console.error(error)});let client=core.getClient();client===void 0&&(debugBuild.DEBUG_BUILD&&utils.logger.warn("No NodeClient was defined, we are exiting the process now."),global.process.exit(1));let options=client.getOptions(),timeout=options&&options.shutdownTimeout&&options.shutdownTimeout>0&&options.shutdownTimeout||DEFAULT_SHUTDOWN_TIMEOUT;client.close(timeout).then(result=>{result||debugBuild.DEBUG_BUILD&&utils.logger.warn("We reached the timeout for emptying the request buffer, still exiting now!"),global.process.exit(1)},error2=>{debugBuild.DEBUG_BUILD&&utils.logger.error(error2)})}exports.logAndExitProcess=logAndExitProcess}});var require_onuncaughtexception=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onuncaughtexception.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build4(),errorhandling=require_errorhandling(),INTEGRATION_NAME="OnUncaughtException",_onUncaughtExceptionIntegration=(options={})=>{let _options={exitEvenIfOtherHandlersAreRegistered:!0,...options};return{name:INTEGRATION_NAME,setupOnce(){},setup(client){global.process.on("uncaughtException",makeErrorHandler(client,_options))}}},onUncaughtExceptionIntegration=core.defineIntegration(_onUncaughtExceptionIntegration),OnUncaughtException=core.convertIntegrationFnToClass(INTEGRATION_NAME,onUncaughtExceptionIntegration);function makeErrorHandler(client,options){let caughtFirstError=!1,caughtSecondError=!1,calledFatalError=!1,firstError,clientOptions=client.getOptions();return Object.assign(error=>{let onFatalError=errorhandling.logAndExitProcess;options.onFatalError?onFatalError=options.onFatalError:clientOptions.onFatalError&&(onFatalError=clientOptions.onFatalError);let processWouldExit=global.process.listeners("uncaughtException").reduce((acc,listener)=>listener.name==="domainUncaughtExceptionClear"||listener.tag&&listener.tag==="sentry_tracingErrorCallback"||listener._errorHandler?acc:acc+1,0)===0,shouldApplyFatalHandlingLogic=options.exitEvenIfOtherHandlersAreRegistered||processWouldExit;caughtFirstError?shouldApplyFatalHandlingLogic&&(calledFatalError?(debugBuild.DEBUG_BUILD&&utils.logger.warn("uncaught exception after calling fatal error shutdown callback - this is bad! forcing shutdown"),errorhandling.logAndExitProcess(error)):caughtSecondError||(caughtSecondError=!0,setTimeout(()=>{calledFatalError||(calledFatalError=!0,onFatalError(firstError,error))},2e3))):(firstError=error,caughtFirstError=!0,core.getClient()===client&&core.captureException(error,{originalException:error,captureContext:{level:"fatal"},mechanism:{handled:!1,type:"onuncaughtexception"}}),!calledFatalError&&shouldApplyFatalHandlingLogic&&(calledFatalError=!0,onFatalError(error)))},{_errorHandler:!0})}exports.OnUncaughtException=OnUncaughtException;exports.makeErrorHandler=makeErrorHandler;exports.onUncaughtExceptionIntegration=onUncaughtExceptionIntegration}});var require_onunhandledrejection=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/onunhandledrejection.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),errorhandling=require_errorhandling(),INTEGRATION_NAME="OnUnhandledRejection",_onUnhandledRejectionIntegration=(options={})=>{let mode=options.mode||"warn";return{name:INTEGRATION_NAME,setupOnce(){},setup(client){global.process.on("unhandledRejection",makeUnhandledPromiseHandler(client,{mode}))}}},onUnhandledRejectionIntegration=core.defineIntegration(_onUnhandledRejectionIntegration),OnUnhandledRejection=core.convertIntegrationFnToClass(INTEGRATION_NAME,onUnhandledRejectionIntegration);function makeUnhandledPromiseHandler(client,options){return function(reason,promise){core.getClient()===client&&(core.captureException(reason,{originalException:promise,captureContext:{extra:{unhandledPromiseRejection:!0}},mechanism:{handled:!1,type:"onunhandledrejection"}}),handleRejection(reason,options))}}function handleRejection(reason,options){let rejectionWarning="This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:";options.mode==="warn"?utils.consoleSandbox(()=>{console.warn(rejectionWarning),console.error(reason&&reason.stack?reason.stack:reason)}):options.mode==="strict"&&(utils.consoleSandbox(()=>{console.warn(rejectionWarning)}),errorhandling.logAndExitProcess(reason))}exports.OnUnhandledRejection=OnUnhandledRejection;exports.makeUnhandledPromiseHandler=makeUnhandledPromiseHandler;exports.onUnhandledRejectionIntegration=onUnhandledRejectionIntegration}});var require_spotlight=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/spotlight.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var http=__require("http"),url=__require("url"),core=require_cjs2(),utils=require_cjs(),INTEGRATION_NAME="Spotlight",_spotlightIntegration=(options={})=>{let _options={sidecarUrl:options.sidecarUrl||"http://localhost:8969/stream"};return{name:INTEGRATION_NAME,setupOnce(){},setup(client){typeof process=="object"&&process.env&&process.env.NODE_ENV!=="development"&&utils.logger.warn("[Spotlight] It seems you're not in dev mode. Do you really want to have Spotlight enabled?"),connectToSpotlight(client,_options)}}},spotlightIntegration=core.defineIntegration(_spotlightIntegration),Spotlight=core.convertIntegrationFnToClass(INTEGRATION_NAME,spotlightIntegration);function connectToSpotlight(client,options){let spotlightUrl=parseSidecarUrl(options.sidecarUrl);if(!spotlightUrl)return;let failedRequests=0;if(typeof client.on!="function"){utils.logger.warn("[Spotlight] Cannot connect to spotlight due to missing method on SDK client (`client.on`)");return}client.on("beforeEnvelope",envelope=>{if(failedRequests>3){utils.logger.warn("[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests");return}let serializedEnvelope=utils.serializeEnvelope(envelope),req=getNativeHttpRequest()({method:"POST",path:spotlightUrl.pathname,hostname:spotlightUrl.hostname,port:spotlightUrl.port,headers:{"Content-Type":"application/x-sentry-envelope"}},res=>{res.on("data",()=>{}),res.on("end",()=>{}),res.setEncoding("utf8")});req.on("error",()=>{failedRequests++,utils.logger.warn("[Spotlight] Failed to send envelope to Spotlight Sidecar")}),req.write(serializedEnvelope),req.end()})}function parseSidecarUrl(url$1){try{return new url.URL(`${url$1}`)}catch{utils.logger.warn(`[Spotlight] Invalid sidecar URL: ${url$1}`);return}}function getNativeHttpRequest(){let{request}=http;return isWrapped(request)?request.__sentry_original__:request}function isWrapped(impl){return"__sentry_original__"in impl}exports.Spotlight=Spotlight;exports.getNativeHttpRequest=getNativeHttpRequest;exports.spotlightIntegration=spotlightIntegration}});var require_undici=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/undici/index.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),nodeVersion=require_nodeVersion();exports.ChannelName=void 0;(function(ChannelName){let RequestCreate="undici:request:create";ChannelName.RequestCreate=RequestCreate;let RequestEnd="undici:request:headers";ChannelName.RequestEnd=RequestEnd;let RequestError="undici:request:error";ChannelName.RequestError=RequestError})(exports.ChannelName||(exports.ChannelName={}));var _nativeNodeFetchintegration=options=>new Undici(options),nativeNodeFetchintegration=core.defineIntegration(_nativeNodeFetchintegration),Undici=class _Undici{static __initStatic(){this.id="Undici"}__init(){this.name=_Undici.id}__init2(){this._createSpanUrlMap=new utils.LRUMap(100)}__init3(){this._headersUrlMap=new utils.LRUMap(100)}constructor(_options={}){_Undici.prototype.__init.call(this),_Undici.prototype.__init2.call(this),_Undici.prototype.__init3.call(this),_Undici.prototype.__init4.call(this),_Undici.prototype.__init5.call(this),_Undici.prototype.__init6.call(this),this._options={breadcrumbs:_options.breadcrumbs===void 0?!0:_options.breadcrumbs,tracing:_options.tracing,shouldCreateSpanForRequest:_options.shouldCreateSpanForRequest}}setupOnce(_addGlobalEventProcessor){if(nodeVersion.NODE_VERSION.major<16)return;let ds;try{ds=__require("diagnostics_channel")}catch{}!ds||!ds.subscribe||(ds.subscribe(exports.ChannelName.RequestCreate,this._onRequestCreate),ds.subscribe(exports.ChannelName.RequestEnd,this._onRequestEnd),ds.subscribe(exports.ChannelName.RequestError,this._onRequestError))}_shouldCreateSpan(url){if(this._options.tracing===!1||this._options.tracing===void 0&&!core.hasTracingEnabled())return!1;if(this._options.shouldCreateSpanForRequest===void 0)return!0;let cachedDecision=this._createSpanUrlMap.get(url);if(cachedDecision!==void 0)return cachedDecision;let decision=this._options.shouldCreateSpanForRequest(url);return this._createSpanUrlMap.set(url,decision),decision}__init4(){this._onRequestCreate=message=>{if(!_optionalChain([core.getClient,"call",_10=>_10(),"optionalAccess",_11=>_11.getIntegration,"call",_12=>_12(_Undici)]))return;let{request}=message,stringUrl=request.origin?request.origin.toString()+request.path:request.path,client=core.getClient();if(!client||core.isSentryRequestUrl(stringUrl,client)||request.__sentry_span__!==void 0)return;let clientOptions=client.getOptions(),scope=core.getCurrentScope(),isolationScope=core.getIsolationScope(),parentSpan=core.getActiveSpan(),span=this._shouldCreateSpan(stringUrl)?createRequestSpan(parentSpan,request,stringUrl):void 0;if(span&&(request.__sentry_span__=span),(url=>{if(clientOptions.tracePropagationTargets===void 0)return!0;let cachedDecision=this._headersUrlMap.get(url);if(cachedDecision!==void 0)return cachedDecision;let decision=utils.stringMatchesSomePattern(url,clientOptions.tracePropagationTargets);return this._headersUrlMap.set(url,decision),decision})(stringUrl)){let{traceId,spanId,sampled,dsc}={...isolationScope.getPropagationContext(),...scope.getPropagationContext()},sentryTraceHeader=span?core.spanToTraceHeader(span):utils.generateSentryTraceHeader(traceId,spanId,sampled),sentryBaggageHeader=utils.dynamicSamplingContextToSentryBaggageHeader(dsc||(span?core.getDynamicSamplingContextFromSpan(span):core.getDynamicSamplingContextFromClient(traceId,client,scope)));setHeadersOnRequest(request,sentryTraceHeader,sentryBaggageHeader)}}}__init5(){this._onRequestEnd=message=>{if(!_optionalChain([core.getClient,"call",_13=>_13(),"optionalAccess",_14=>_14.getIntegration,"call",_15=>_15(_Undici)]))return;let{request,response}=message,stringUrl=request.origin?request.origin.toString()+request.path:request.path;if(core.isSentryRequestUrl(stringUrl,core.getClient()))return;let span=request.__sentry_span__;span&&(core.setHttpStatus(span,response.statusCode),span.end()),this._options.breadcrumbs&&core.addBreadcrumb({category:"http",data:{method:request.method,status_code:response.statusCode,url:stringUrl},type:"http"},{event:"response",request,response})}}__init6(){this._onRequestError=message=>{if(!_optionalChain([core.getClient,"call",_16=>_16(),"optionalAccess",_17=>_17.getIntegration,"call",_18=>_18(_Undici)]))return;let{request}=message,stringUrl=request.origin?request.origin.toString()+request.path:request.path;if(core.isSentryRequestUrl(stringUrl,core.getClient()))return;let span=request.__sentry_span__;span&&(span.setStatus("internal_error"),span.end()),this._options.breadcrumbs&&core.addBreadcrumb({category:"http",data:{method:request.method,url:stringUrl},level:"error",type:"http"},{event:"error",request})}}};Undici.__initStatic();function setHeadersOnRequest(request,sentryTrace,sentryBaggageHeader){let hasSentryHeaders;Array.isArray(request.headers)?hasSentryHeaders=request.headers.some(headerLine=>headerLine==="sentry-trace"):hasSentryHeaders=request.headers.split(`\r
|
|
39
|
+
`).some(headerLine=>headerLine.startsWith("sentry-trace:")),!hasSentryHeaders&&(request.addHeader("sentry-trace",sentryTrace),sentryBaggageHeader&&request.addHeader("baggage",sentryBaggageHeader))}function createRequestSpan(activeSpan,request,stringUrl){let url=utils.parseUrl(stringUrl),method=request.method||"GET",data={"http.method":method};return url.search&&(data["http.query"]=url.search),url.hash&&(data["http.fragment"]=url.hash),_optionalChain([activeSpan,"optionalAccess",_19=>_19.startChild,"call",_20=>_20({op:"http.client",origin:"auto.http.node.undici",description:`${method} ${utils.getSanitizedUrlString(url)}`,data})])}exports.Undici=Undici;exports.nativeNodeFetchintegration=nativeNodeFetchintegration}});var require_module=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/module.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var path=__require("path"),utils=require_cjs();function normalizeWindowsPath(path2){return path2.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function createGetModuleFromFilename(basePath=process.argv[1]?utils.dirname(process.argv[1]):process.cwd(),isWindows=path.sep==="\\"){let normalizedBase=isWindows?normalizeWindowsPath(basePath):basePath;return filename=>{if(!filename)return;let normalizedFilename=isWindows?normalizeWindowsPath(filename):filename,{dir,base:file,ext}=path.posix.parse(normalizedFilename);(ext===".js"||ext===".mjs"||ext===".cjs")&&(file=file.slice(0,ext.length*-1)),dir||(dir=".");let n=dir.lastIndexOf("/node_modules");if(n>-1)return`${dir.slice(n+14).replace(/\//g,".")}:${file}`;if(dir.startsWith(normalizedBase)){let moduleName=dir.slice(normalizedBase.length+1).replace(/\//g,".");return moduleName&&(moduleName+=":"),moduleName+=file,moduleName}return file}}exports.createGetModuleFromFilename=createGetModuleFromFilename}});var require_sdk2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/sdk.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),index$2=require_async(),client=require_client(),console2=require_console2(),context=require_context(),contextlines=require_contextlines(),http=require_http3(),index$1=require_local_variables(),modules=require_modules(),onuncaughtexception=require_onuncaughtexception(),onunhandledrejection=require_onunhandledrejection(),spotlight=require_spotlight(),index=require_undici(),module$1=require_module(),http$1=require_http(),defaultIntegrations=[core.inboundFiltersIntegration(),core.functionToStringIntegration(),core.linkedErrorsIntegration(),core.requestDataIntegration(),console2.consoleIntegration(),http.httpIntegration(),index.nativeNodeFetchintegration(),onuncaughtexception.onUncaughtExceptionIntegration(),onunhandledrejection.onUnhandledRejectionIntegration(),contextlines.contextLinesIntegration(),index$1.localVariablesIntegration(),context.nodeContextIntegration(),modules.modulesIntegration()];function getDefaultIntegrations(_options){let carrier=core.getMainCarrier(),autoloadedIntegrations=_optionalChain([carrier,"access",_=>_.__SENTRY__,"optionalAccess",_2=>_2.integrations])||[];return[...defaultIntegrations,...autoloadedIntegrations]}function init(options={}){index$2.setNodeAsyncContextStrategy(),options.defaultIntegrations===void 0&&(options.defaultIntegrations=getDefaultIntegrations()),options.dsn===void 0&&process.env.SENTRY_DSN&&(options.dsn=process.env.SENTRY_DSN);let sentryTracesSampleRate=process.env.SENTRY_TRACES_SAMPLE_RATE;if(options.tracesSampleRate===void 0&&sentryTracesSampleRate){let tracesSampleRate=parseFloat(sentryTracesSampleRate);isFinite(tracesSampleRate)&&(options.tracesSampleRate=tracesSampleRate)}if(options.release===void 0){let detectedRelease=getSentryRelease();detectedRelease!==void 0?options.release=detectedRelease:options.autoSessionTracking=!1}options.environment===void 0&&process.env.SENTRY_ENVIRONMENT&&(options.environment=process.env.SENTRY_ENVIRONMENT),options.autoSessionTracking===void 0&&options.dsn!==void 0&&(options.autoSessionTracking=!0),options.instrumenter===void 0&&(options.instrumenter="sentry");let clientOptions={...options,stackParser:utils.stackParserFromStackParserOptions(options.stackParser||defaultStackParser),integrations:core.getIntegrationsToSetup(options),transport:options.transport||http$1.makeNodeTransport};if(core.initAndBind(options.clientClass||client.NodeClient,clientOptions),options.autoSessionTracking&&startSessionTracking(),updateScopeFromEnvVariables(),options.spotlight){let client2=core.getClient();if(client2&&client2.addIntegration){let integrations=client2.getOptions().integrations;for(let integration of integrations)client2.addIntegration(integration);client2.addIntegration(spotlight.spotlightIntegration({sidecarUrl:typeof options.spotlight=="string"?options.spotlight:void 0}))}}}function isAutoSessionTrackingEnabled(client2){if(client2===void 0)return!1;let clientOptions=client2&&client2.getOptions();return clientOptions&&clientOptions.autoSessionTracking!==void 0?clientOptions.autoSessionTracking:!1}function getSentryRelease(fallback){return process.env.SENTRY_RELEASE?process.env.SENTRY_RELEASE:utils.GLOBAL_OBJ.SENTRY_RELEASE&&utils.GLOBAL_OBJ.SENTRY_RELEASE.id?utils.GLOBAL_OBJ.SENTRY_RELEASE.id:process.env.GITHUB_SHA||process.env.COMMIT_REF||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA||process.env.CF_PAGES_COMMIT_SHA||fallback}var defaultStackParser=utils.createStackParser(utils.nodeStackLineParser(module$1.createGetModuleFromFilename()));function startSessionTracking(){core.startSession(),process.on("beforeExit",()=>{let session=core.getIsolationScope().getSession();session&&!["exited","crashed"].includes(session.status)&&core.endSession()})}function updateScopeFromEnvVariables(){let sentryUseEnvironment=(process.env.SENTRY_USE_ENVIRONMENT||"").toLowerCase();if(!["false","n","no","off","0"].includes(sentryUseEnvironment)){let sentryTraceEnv=process.env.SENTRY_TRACE,baggageEnv=process.env.SENTRY_BAGGAGE,propagationContext=utils.propagationContextFromHeaders(sentryTraceEnv,baggageEnv);core.getCurrentScope().setPropagationContext(propagationContext)}}exports.defaultIntegrations=defaultIntegrations;exports.defaultStackParser=defaultStackParser;exports.getDefaultIntegrations=getDefaultIntegrations;exports.getSentryRelease=getSentryRelease;exports.init=init;exports.isAutoSessionTrackingEnabled=isAutoSessionTrackingEnabled}});var require_utils4=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/utils.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var fs=__require("fs"),path=__require("path");function deepReadDirSync(targetDir){let targetDirAbsPath=path.resolve(targetDir);if(!fs.existsSync(targetDirAbsPath))throw new Error(`Cannot read contents of ${targetDirAbsPath}. Directory does not exist.`);if(!fs.statSync(targetDirAbsPath).isDirectory())throw new Error(`Cannot read contents of ${targetDirAbsPath}, because it is not a directory.`);let deepReadCurrentDir=currentDirAbsPath=>fs.readdirSync(currentDirAbsPath).reduce((absPaths,itemName)=>{let itemAbsPath=path.join(currentDirAbsPath,itemName);return fs.statSync(itemAbsPath).isDirectory()?absPaths.concat(deepReadCurrentDir(itemAbsPath)):(absPaths.push(itemAbsPath),absPaths)},[]);return deepReadCurrentDir(targetDirAbsPath).map(absPath=>path.relative(targetDirAbsPath,absPath))}exports.deepReadDirSync=deepReadDirSync}});var require_worker_script=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/worker-script.js"(exports){exports.base64WorkerScript="aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ2luc3BlY3Rvcic7CmltcG9ydCB7IHdvcmtlckRhdGEsIHBhcmVudFBvcnQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcyc7CmltcG9ydCB7IHBvc2l4LCBzZXAgfSBmcm9tICdwYXRoJzsKaW1wb3J0ICogYXMgaHR0cCBmcm9tICdodHRwJzsKaW1wb3J0ICogYXMgaHR0cHMgZnJvbSAnaHR0cHMnOwppbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7CmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7CmltcG9ydCB7IGNyZWF0ZUd6aXAgfSBmcm9tICd6bGliJzsKaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7CmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnOwoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZApjb25zdCBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIG9uZSBvZiBhIGZldyBFcnJvciBvciBFcnJvci1saWtlCiAqIHtAbGluayBpc0Vycm9yfS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXJyb3Iod2F0KSB7CiAgc3dpdGNoIChvYmplY3RUb1N0cmluZy5jYWxsKHdhdCkpIHsKICAgIGNhc2UgJ1tvYmplY3QgRXJyb3JdJzoKICAgIGNhc2UgJ1tvYmplY3QgRXhjZXB0aW9uXSc6CiAgICBjYXNlICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nOgogICAgICByZXR1cm4gdHJ1ZTsKICAgIGRlZmF1bHQ6CiAgICAgIHJldHVybiBpc0luc3RhbmNlT2Yod2F0LCBFcnJvcik7CiAgfQp9Ci8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gYnVpbHQtaW4gY2xhc3MuCiAqCiAqIEBwYXJhbSB3YXQgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQKICogQHBhcmFtIGNsYXNzTmFtZQogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0J1aWx0aW4od2F0LCBjbGFzc05hbWUpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbCh3YXQpID09PSBgW29iamVjdCAke2NsYXNzTmFtZX1dYDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIHN0cmluZwogKiB7QGxpbmsgaXNTdHJpbmd9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNTdHJpbmcod2F0KSB7CiAgcmV0dXJuIGlzQnVpbHRpbih3YXQsICdTdHJpbmcnKTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBvYmplY3QgbGl0ZXJhbCwgb3IgYSBjbGFzcyBpbnN0YW5jZS4KICoge0BsaW5rIGlzUGxhaW5PYmplY3R9LgogKgogKiBAcGFyYW0gd2F0IEEgdmFsdWUgdG8gYmUgY2hlY2tlZC4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh3YXQpIHsKICByZXR1cm4gaXNCdWlsdGluKHdhdCwgJ09iamVjdCcpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEV2ZW50IGluc3RhbmNlCiAqIHtAbGluayBpc0V2ZW50fS4KICoKICogQHBhcmFtIHdhdCBBIHZhbHVlIHRvIGJlIGNoZWNrZWQuCiAqIEByZXR1cm5zIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdC4KICovCmZ1bmN0aW9uIGlzRXZlbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHdhdCwgRXZlbnQpOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUncyB0eXBlIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UKICoge0BsaW5rIGlzRWxlbWVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc0VsZW1lbnQod2F0KSB7CiAgcmV0dXJuIHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBpc0luc3RhbmNlT2Yod2F0LCBFbGVtZW50KTsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlIGhhcyBhIHRoZW4gZnVuY3Rpb24uCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKi8KZnVuY3Rpb24gaXNUaGVuYWJsZSh3YXQpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgcmV0dXJuIEJvb2xlYW4od2F0ICYmIHdhdC50aGVuICYmIHR5cGVvZiB3YXQudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7Cn0KCi8qKgogKiBDaGVja3Mgd2hldGhlciBnaXZlbiB2YWx1ZSdzIHR5cGUgaXMgYSBTeW50aGV0aWNFdmVudAogKiB7QGxpbmsgaXNTeW50aGV0aWNFdmVudH0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1N5bnRoZXRpY0V2ZW50KHdhdCkgewogIHJldHVybiBpc1BsYWluT2JqZWN0KHdhdCkgJiYgJ25hdGl2ZUV2ZW50JyBpbiB3YXQgJiYgJ3ByZXZlbnREZWZhdWx0JyBpbiB3YXQgJiYgJ3N0b3BQcm9wYWdhdGlvbicgaW4gd2F0Owp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgZ2l2ZW4gdmFsdWUgaXMgTmFOCiAqIHtAbGluayBpc05hTn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc05hTiQxKHdhdCkgewogIHJldHVybiB0eXBlb2Ygd2F0ID09PSAnbnVtYmVyJyAmJiB3YXQgIT09IHdhdDsKfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiBwcm92aWRlZCBjb25zdHJ1Y3Rvci4KICoge0BsaW5rIGlzSW5zdGFuY2VPZn0uCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcGFyYW0gYmFzZSBBIGNvbnN0cnVjdG9yIHRvIGJlIHVzZWQgaW4gYSBjaGVjay4KICogQHJldHVybnMgQSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0LgogKi8KZnVuY3Rpb24gaXNJbnN0YW5jZU9mKHdhdCwgYmFzZSkgewogIHRyeSB7CiAgICByZXR1cm4gd2F0IGluc3RhbmNlb2YgYmFzZTsKICB9IGNhdGNoIChfZSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KfQoKLyoqCiAqIENoZWNrcyB3aGV0aGVyIGdpdmVuIHZhbHVlJ3MgdHlwZSBpcyBhIFZ1ZSBWaWV3TW9kZWwuCiAqCiAqIEBwYXJhbSB3YXQgQSB2YWx1ZSB0byBiZSBjaGVja2VkLgogKiBAcmV0dXJucyBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQuCiAqLwpmdW5jdGlvbiBpc1Z1ZVZpZXdNb2RlbCh3YXQpIHsKICAvLyBOb3QgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBiZWNhdXNlIGluIFZ1ZSAzIGl0IHdvdWxkIHJlYWQgdGhlIGluc3RhbmNlJ3MgU3ltYm9sKFN5bWJvbC50b1N0cmluZ1RhZykgcHJvcGVydHkuCiAgcmV0dXJuICEhKHR5cGVvZiB3YXQgPT09ICdvYmplY3QnICYmIHdhdCAhPT0gbnVsbCAmJiAoKHdhdCApLl9faXNWdWUgfHwgKHdhdCApLl9pc1Z1ZSkpOwp9CgovKiogSW50ZXJuYWwgZ2xvYmFsIHdpdGggY29tbW9uIHByb3BlcnRpZXMgYW5kIFNlbnRyeSBleHRlbnNpb25zICAqLwoKLy8gVGhlIGNvZGUgYmVsb3cgZm9yICdpc0dsb2JhbE9iaicgYW5kICdHTE9CQUxfT0JKJyB3YXMgY29waWVkIGZyb20gY29yZS1qcyBiZWZvcmUgbW9kaWZpY2F0aW9uCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvMWI5NDRkZjU1MjgyY2RjOTljOTBkYjVmNDllYjBiNmVkYTJjYzBhMy9wYWNrYWdlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMKLy8gY29yZS1qcyBoYXMgdGhlIGZvbGxvd2luZyBsaWNlbmNlOgovLwovLyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYKLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQovLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAovLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgovLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgovLyBUSEUgU09GVFdBUkUuCgovKiogUmV0dXJucyAnb2JqJyBpZiBpdCdzIHRoZSBnbG9iYWwgb2JqZWN0LCBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWQgKi8KZnVuY3Rpb24gaXNHbG9iYWxPYmoob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiBvYmouTWF0aCA9PSBNYXRoID8gb2JqIDogdW5kZWZpbmVkOwp9CgovKiogR2V0J3MgdGhlIGdsb2JhbCBvYmplY3QgZm9yIHRoZSBjdXJyZW50IEphdmFTY3JpcHQgcnVudGltZSAqLwpjb25zdCBHTE9CQUxfT0JKID0KICAodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgaXNHbG9iYWxPYmooZ2xvYmFsVGhpcykpIHx8CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscwogICh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHdpbmRvdykpIHx8CiAgKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKHNlbGYpKSB8fAogICh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGlzR2xvYmFsT2JqKGdsb2JhbCkpIHx8CiAgKGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH0pKCkgfHwKICB7fTsKCi8qKgogKiBAZGVwcmVjYXRlZCBVc2UgR0xPQkFMX09CSiBpbnN0ZWFkIG9yIFdJTkRPVyBmcm9tIEBzZW50cnkvYnJvd3Nlci4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjgKICovCmZ1bmN0aW9uIGdldEdsb2JhbE9iamVjdCgpIHsKICByZXR1cm4gR0xPQkFMX09CSiA7Cn0KCi8qKgogKiBSZXR1cm5zIGEgZ2xvYmFsIHNpbmdsZXRvbiBjb250YWluZWQgaW4gdGhlIGdsb2JhbCBgX19TRU5UUllfX2Agb2JqZWN0LgogKgogKiBJZiB0aGUgc2luZ2xldG9uIGRvZXNuJ3QgYWxyZWFkeSBleGlzdCBpbiBgX19TRU5UUllfX2AsIGl0IHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUgZ2l2ZW4gZmFjdG9yeQogKiBmdW5jdGlvbiBhbmQgYWRkZWQgdG8gdGhlIGBfX1NFTlRSWV9fYCBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24gb24gX19TRU5UUllfXwogKiBAcGFyYW0gY3JlYXRvciBjcmVhdG9yIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBzaW5nbGV0b24gaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IG9uIGBfX1NFTlRSWV9fYAogKiBAcGFyYW0gb2JqIChPcHRpb25hbCkgVGhlIGdsb2JhbCBvYmplY3Qgb24gd2hpY2ggdG8gbG9vayBmb3IgYF9fU0VOVFJZX19gLCBpZiBub3QgYEdMT0JBTF9PQkpgJ3MgcmV0dXJuIHZhbHVlCiAqIEByZXR1cm5zIHRoZSBzaW5nbGV0b24KICovCmZ1bmN0aW9uIGdldEdsb2JhbFNpbmdsZXRvbihuYW1lLCBjcmVhdG9yLCBvYmopIHsKICBjb25zdCBnYmwgPSAob2JqIHx8IEdMT0JBTF9PQkopIDsKICBjb25zdCBfX1NFTlRSWV9fID0gKGdibC5fX1NFTlRSWV9fID0gZ2JsLl9fU0VOVFJZX18gfHwge30pOwogIGNvbnN0IHNpbmdsZXRvbiA9IF9fU0VOVFJZX19bbmFtZV0gfHwgKF9fU0VOVFJZX19bbmFtZV0gPSBjcmVhdG9yKCkpOwogIHJldHVybiBzaW5nbGV0b247Cn0KCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpjb25zdCBXSU5ET1cgPSBnZXRHbG9iYWxPYmplY3QoKTsKCmNvbnN0IERFRkFVTFRfTUFYX1NUUklOR19MRU5HVEggPSA4MDsKCi8qKgogKiBHaXZlbiBhIGNoaWxkIERPTSBlbGVtZW50LCByZXR1cm5zIGEgcXVlcnktc2VsZWN0b3Igc3RhdGVtZW50IGRlc2NyaWJpbmcgdGhhdAogKiBhbmQgaXRzIGFuY2VzdG9ycwogKiBlLmcuIFtIVE1MRWxlbWVudF0gPT4gYm9keSA+IGRpdiA+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gaHRtbFRyZWVBc1N0cmluZygKICBlbGVtLAogIG9wdGlvbnMgPSB7fSwKKSB7CiAgaWYgKCFlbGVtKSB7CiAgICByZXR1cm4gJzx1bmtub3duPic7CiAgfQoKICAvLyB0cnkvY2F0Y2ggYm90aDoKICAvLyAtIGFjY2Vzc2luZyBldmVudC50YXJnZXQgKHNlZSBnZXRzZW50cnkvcmF2ZW4tanMjODM4LCAjNzY4KQogIC8vIC0gYGh0bWxUcmVlQXNTdHJpbmdgIGJlY2F1c2UgaXQncyBjb21wbGV4LCBhbmQganVzdCBhY2Nlc3NpbmcgdGhlIERPTSBpbmNvcnJlY3RseQogIC8vIC0gY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCiAgdHJ5IHsKICAgIGxldCBjdXJyZW50RWxlbSA9IGVsZW0gOwogICAgY29uc3QgTUFYX1RSQVZFUlNFX0hFSUdIVCA9IDU7CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGxldCBoZWlnaHQgPSAwOwogICAgbGV0IGxlbiA9IDA7CiAgICBjb25zdCBzZXBhcmF0b3IgPSAnID4gJzsKICAgIGNvbnN0IHNlcExlbmd0aCA9IHNlcGFyYXRvci5sZW5ndGg7CiAgICBsZXQgbmV4dFN0cjsKICAgIGNvbnN0IGtleUF0dHJzID0gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBvcHRpb25zLmtleUF0dHJzOwogICAgY29uc3QgbWF4U3RyaW5nTGVuZ3RoID0gKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpICYmIG9wdGlvbnMubWF4U3RyaW5nTGVuZ3RoKSB8fCBERUZBVUxUX01BWF9TVFJJTkdfTEVOR1RIOwoKICAgIHdoaWxlIChjdXJyZW50RWxlbSAmJiBoZWlnaHQrKyA8IE1BWF9UUkFWRVJTRV9IRUlHSFQpIHsKICAgICAgbmV4dFN0ciA9IF9odG1sRWxlbWVudEFzU3RyaW5nKGN1cnJlbnRFbGVtLCBrZXlBdHRycyk7CiAgICAgIC8vIGJhaWwgb3V0IGlmCiAgICAgIC8vIC0gbmV4dFN0ciBpcyB0aGUgJ2h0bWwnIGVsZW1lbnQKICAgICAgLy8gLSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgdGhhdCB3b3VsZCBiZSBjcmVhdGVkIGV4Y2VlZHMgbWF4U3RyaW5nTGVuZ3RoCiAgICAgIC8vICAgKGlnbm9yZSB0aGlzIGxpbWl0IGlmIHdlIGFyZSBvbiB0aGUgZmlyc3QgaXRlcmF0aW9uKQogICAgICBpZiAobmV4dFN0ciA9PT0gJ2h0bWwnIHx8IChoZWlnaHQgPiAxICYmIGxlbiArIG91dC5sZW5ndGggKiBzZXBMZW5ndGggKyBuZXh0U3RyLmxlbmd0aCA+PSBtYXhTdHJpbmdMZW5ndGgpKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgICAgIG91dC5wdXNoKG5leHRTdHIpOwoKICAgICAgbGVuICs9IG5leHRTdHIubGVuZ3RoOwogICAgICBjdXJyZW50RWxlbSA9IGN1cnJlbnRFbGVtLnBhcmVudE5vZGU7CiAgICB9CgogICAgcmV0dXJuIG91dC5yZXZlcnNlKCkuam9pbihzZXBhcmF0b3IpOwogIH0gY2F0Y2ggKF9vTykgewogICAgcmV0dXJuICc8dW5rbm93bj4nOwogIH0KfQoKLyoqCiAqIFJldHVybnMgYSBzaW1wbGUsIHF1ZXJ5LXNlbGVjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGEgRE9NIGVsZW1lbnQKICogZS5nLiBbSFRNTEVsZW1lbnRdID0+IGlucHV0I2Zvby5idG5bbmFtZT1iYXpdCiAqIEByZXR1cm5zIGdlbmVyYXRlZCBET00gcGF0aAogKi8KZnVuY3Rpb24gX2h0bWxFbGVtZW50QXNTdHJpbmcoZWwsIGtleUF0dHJzKSB7CiAgY29uc3QgZWxlbSA9IGVsCgo7CgogIGNvbnN0IG91dCA9IFtdOwogIGxldCBjbGFzc05hbWU7CiAgbGV0IGNsYXNzZXM7CiAgbGV0IGtleTsKICBsZXQgYXR0cjsKICBsZXQgaTsKCiAgaWYgKCFlbGVtIHx8ICFlbGVtLnRhZ05hbWUpIHsKICAgIHJldHVybiAnJzsKICB9CgogIC8vIEB0cy1leHBlY3QtZXJyb3IgV0lORE9XIGhhcyBIVE1MRWxlbWVudAogIGlmIChXSU5ET1cuSFRNTEVsZW1lbnQpIHsKICAgIC8vIElmIHVzaW5nIHRoZSBjb21wb25lbnQgbmFtZSBhbm5vdGF0aW9uIHBsdWdpbiwgdGhpcyB2YWx1ZSBtYXkgYmUgYXZhaWxhYmxlIG9uIHRoZSBET00gbm9kZQogICAgaWYgKGVsZW0gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtLmRhdGFzZXQgJiYgZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXSkgewogICAgICByZXR1cm4gZWxlbS5kYXRhc2V0WydzZW50cnlDb21wb25lbnQnXTsKICAgIH0KICB9CgogIG91dC5wdXNoKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpKTsKCiAgLy8gUGFpcnMgb2YgYXR0cmlidXRlIGtleXMgZGVmaW5lZCBpbiBgc2VyaWFsaXplQXR0cmlidXRlYCBhbmQgdGhlaXIgdmFsdWVzIG9uIGVsZW1lbnQuCiAgY29uc3Qga2V5QXR0clBhaXJzID0KICAgIGtleUF0dHJzICYmIGtleUF0dHJzLmxlbmd0aAogICAgICA/IGtleUF0dHJzLmZpbHRlcihrZXlBdHRyID0+IGVsZW0uZ2V0QXR0cmlidXRlKGtleUF0dHIpKS5tYXAoa2V5QXR0ciA9PiBba2V5QXR0ciwgZWxlbS5nZXRBdHRyaWJ1dGUoa2V5QXR0cildKQogICAgICA6IG51bGw7CgogIGlmIChrZXlBdHRyUGFpcnMgJiYga2V5QXR0clBhaXJzLmxlbmd0aCkgewogICAga2V5QXR0clBhaXJzLmZvckVhY2goa2V5QXR0clBhaXIgPT4gewogICAgICBvdXQucHVzaChgWyR7a2V5QXR0clBhaXJbMF19PSIke2tleUF0dHJQYWlyWzFdfSJdYCk7CiAgICB9KTsKICB9IGVsc2UgewogICAgaWYgKGVsZW0uaWQpIHsKICAgICAgb3V0LnB1c2goYCMke2VsZW0uaWR9YCk7CiAgICB9CgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdAogICAgY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWU7CiAgICBpZiAoY2xhc3NOYW1lICYmIGlzU3RyaW5nKGNsYXNzTmFtZSkpIHsKICAgICAgY2xhc3NlcyA9IGNsYXNzTmFtZS5zcGxpdCgvXHMrLyk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgb3V0LnB1c2goYC4ke2NsYXNzZXNbaV19YCk7CiAgICAgIH0KICAgIH0KICB9CiAgY29uc3QgYWxsb3dlZEF0dHJzID0gWydhcmlhLWxhYmVsJywgJ3R5cGUnLCAnbmFtZScsICd0aXRsZScsICdhbHQnXTsKICBmb3IgKGkgPSAwOyBpIDwgYWxsb3dlZEF0dHJzLmxlbmd0aDsgaSsrKSB7CiAgICBrZXkgPSBhbGxvd2VkQXR0cnNbaV07CiAgICBhdHRyID0gZWxlbS5nZXRBdHRyaWJ1dGUoa2V5KTsKICAgIGlmIChhdHRyKSB7CiAgICAgIG91dC5wdXNoKGBbJHtrZXl9PSIke2F0dHJ9Il1gKTsKICAgIH0KICB9CiAgcmV0dXJuIG91dC5qb2luKCcnKTsKfQoKLyoqCiAqIFRoaXMgc2VydmVzIGFzIGEgYnVpbGQgdGltZSBmbGFnIHRoYXQgd2lsbCBiZSB0cnVlIGJ5IGRlZmF1bHQsIGJ1dCBmYWxzZSBpbiBub24tZGVidWcgYnVpbGRzIG9yIGlmIHVzZXJzIHJlcGxhY2UgYF9fU0VOVFJZX0RFQlVHX19gIGluIHRoZWlyIGdlbmVyYXRlZCBjb2RlLgogKgogKiBBVFRFTlRJT046IFRoaXMgY29uc3RhbnQgbXVzdCBuZXZlciBjcm9zcyBwYWNrYWdlIGJvdW5kYXJpZXMgKGkuZS4gYmUgZXhwb3J0ZWQpIHRvIGd1YXJhbnRlZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciB0cmVlIHNoYWtpbmcuCiAqLwpjb25zdCBERUJVR19CVUlMRCQxID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCi8qKiBQcmVmaXggZm9yIGxvZ2dpbmcgc3RyaW5ncyAqLwpjb25zdCBQUkVGSVggPSAnU2VudHJ5IExvZ2dlciAnOwoKY29uc3QgQ09OU09MRV9MRVZFTFMgPSBbCiAgJ2RlYnVnJywKICAnaW5mbycsCiAgJ3dhcm4nLAogICdlcnJvcicsCiAgJ2xvZycsCiAgJ2Fzc2VydCcsCiAgJ3RyYWNlJywKXSA7CgovKiogVGhpcyBtYXkgYmUgbXV0YXRlZCBieSB0aGUgY29uc29sZSBpbnN0cnVtZW50YXRpb24uICovCmNvbnN0IG9yaWdpbmFsQ29uc29sZU1ldGhvZHMKCiA9IHt9OwoKLyoqIEpTRG9jICovCgovKioKICogVGVtcG9yYXJpbHkgZGlzYWJsZSBzZW50cnkgY29uc29sZSBpbnN0cnVtZW50YXRpb25zLgogKgogKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIHJ1biBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBgY29uc29sZWAgbWVzc2FnZXMKICogQHJldHVybnMgVGhlIHJlc3VsdHMgb2YgdGhlIGNhbGxiYWNrCiAqLwpmdW5jdGlvbiBjb25zb2xlU2FuZGJveChjYWxsYmFjaykgewogIGlmICghKCdjb25zb2xlJyBpbiBHTE9CQUxfT0JKKSkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfQoKICBjb25zdCBjb25zb2xlID0gR0xPQkFMX09CSi5jb25zb2xlIDsKICBjb25zdCB3cmFwcGVkRnVuY3MgPSB7fTsKCiAgY29uc3Qgd3JhcHBlZExldmVscyA9IE9iamVjdC5rZXlzKG9yaWdpbmFsQ29uc29sZU1ldGhvZHMpIDsKCiAgLy8gUmVzdG9yZSBhbGwgd3JhcHBlZCBjb25zb2xlIG1ldGhvZHMKICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgY29uc3Qgb3JpZ2luYWxDb25zb2xlTWV0aG9kID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kc1tsZXZlbF0gOwogICAgd3JhcHBlZEZ1bmNzW2xldmVsXSA9IGNvbnNvbGVbbGV2ZWxdIDsKICAgIGNvbnNvbGVbbGV2ZWxdID0gb3JpZ2luYWxDb25zb2xlTWV0aG9kOwogIH0pOwoKICB0cnkgewogICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgfSBmaW5hbGx5IHsKICAgIC8vIFJldmVydCByZXN0b3JhdGlvbiB0byB3cmFwcGVkIHN0YXRlCiAgICB3cmFwcGVkTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4gewogICAgICBjb25zb2xlW2xldmVsXSA9IHdyYXBwZWRGdW5jc1tsZXZlbF0gOwogICAgfSk7CiAgfQp9CgpmdW5jdGlvbiBtYWtlTG9nZ2VyKCkgewogIGxldCBlbmFibGVkID0gZmFsc2U7CiAgY29uc3QgbG9nZ2VyID0gewogICAgZW5hYmxlOiAoKSA9PiB7CiAgICAgIGVuYWJsZWQgPSB0cnVlOwogICAgfSwKICAgIGRpc2FibGU6ICgpID0+IHsKICAgICAgZW5hYmxlZCA9IGZhbHNlOwogICAgfSwKICAgIGlzRW5hYmxlZDogKCkgPT4gZW5hYmxlZCwKICB9OwoKICBpZiAoREVCVUdfQlVJTEQkMSkgewogICAgQ09OU09MRV9MRVZFTFMuZm9yRWFjaChuYW1lID0+IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgICAgbG9nZ2VyW25hbWVdID0gKC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoZW5hYmxlZCkgewogICAgICAgICAgY29uc29sZVNhbmRib3goKCkgPT4gewogICAgICAgICAgICBHTE9CQUxfT0JKLmNvbnNvbGVbbmFtZV0oYCR7UFJFRklYfVske25hbWV9XTpgLCAuLi5hcmdzKTsKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBDT05TT0xFX0xFVkVMUy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBsb2dnZXJbbmFtZV0gPSAoKSA9PiB1bmRlZmluZWQ7CiAgICB9KTsKICB9CgogIHJldHVybiBsb2dnZXIgOwp9Cgpjb25zdCBsb2dnZXIgPSBtYWtlTG9nZ2VyKCk7CgovKioKICogUmVuZGVycyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRHNuLgogKgogKiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcmVuZGVyIHRoZSBwdWJsaWMgcmVwcmVzZW50YXRpb24gd2l0aG91dCB0aGUgcGFzc3dvcmQKICogY29tcG9uZW50LiBUbyBnZXQgdGhlIGRlcHJlY2F0ZWQgcHJpdmF0ZSByZXByZXNlbnRhdGlvbiwgc2V0IGB3aXRoUGFzc3dvcmRgCiAqIHRvIHRydWUuCiAqCiAqIEBwYXJhbSB3aXRoUGFzc3dvcmQgV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHBhc3N3b3JkIHdpbGwgYmUgaW5jbHVkZWQuCiAqLwpmdW5jdGlvbiBkc25Ub1N0cmluZyhkc24sIHdpdGhQYXNzd29yZCA9IGZhbHNlKSB7CiAgY29uc3QgeyBob3N0LCBwYXRoLCBwYXNzLCBwb3J0LCBwcm9qZWN0SWQsIHByb3RvY29sLCBwdWJsaWNLZXkgfSA9IGRzbjsKICByZXR1cm4gKAogICAgYCR7cHJvdG9jb2x9Oi8vJHtwdWJsaWNLZXl9JHt3aXRoUGFzc3dvcmQgJiYgcGFzcyA/IGA6JHtwYXNzfWAgOiAnJ31gICsKICAgIGBAJHtob3N0fSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30vJHtwYXRoID8gYCR7cGF0aH0vYCA6IHBhdGh9JHtwcm9qZWN0SWR9YAogICk7Cn0KCi8qKiBBbiBlcnJvciBlbWl0dGVkIGJ5IFNlbnRyeSBTREtzIGFuZCByZWxhdGVkIHV0aWxpdGllcy4gKi8KY2xhc3MgU2VudHJ5RXJyb3IgZXh0ZW5kcyBFcnJvciB7CiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGlzIGVycm9yIGluc3RhbmNlLiAqLwoKICAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGxvZ0xldmVsID0gJ3dhcm4nKSB7CiAgICBzdXBlcihtZXNzYWdlKTt0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgdGhpcy5uYW1lID0gbmV3LnRhcmdldC5wcm90b3R5cGUuY29uc3RydWN0b3IubmFtZTsKICAgIC8vIFRoaXMgc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIGBFcnJvcmAsIG5vdCBgU2VudHJ5RXJyb3JgLiBJdCdzIHVuY2xlYXIgd2h5IHdlIGRvIHRoaXMsIGJ1dCBjb21tZW50aW5nIHRoaXMgbGluZQogICAgLy8gb3V0IGNhdXNlcyB2YXJpb3VzIChzZWVtaW5nbHkgdG90YWxseSB1bnJlbGF0ZWQpIHBsYXl3cmlnaHQgdGVzdHMgY29uc2lzdGVudGx5IHRpbWUgb3V0LiBGWUksIHRoaXMgbWFrZXMKICAgIC8vIGluc3RhbmNlcyBvZiBgU2VudHJ5RXJyb3JgIGZhaWwgYG9iaiBpbnN0YW5jZW9mIFNlbnRyeUVycm9yYCBjaGVja3MuCiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOwogICAgdGhpcy5sb2dMZXZlbCA9IGxvZ0xldmVsOwogIH0KfQoKLyoqCiAqIEVuY29kZXMgZ2l2ZW4gb2JqZWN0IGludG8gdXJsLWZyaWVuZGx5IGZvcm1hdAogKgogKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNlcmlhbGl6YWJsZSB2YWx1ZXMKICogQHJldHVybnMgc3RyaW5nIEVuY29kZWQKICovCmZ1bmN0aW9uIHVybEVuY29kZShvYmplY3QpIHsKICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KQogICAgLm1hcChrZXkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iamVjdFtrZXldKX1gKQogICAgLmpvaW4oJyYnKTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYW55IGBFcnJvcmAgb3IgYEV2ZW50YCBpbnRvIGEgcGxhaW4gb2JqZWN0IHdpdGggYWxsIG9mIHRoZWlyIGVudW1lcmFibGUgcHJvcGVydGllcywgYW5kIHNvbWUgb2YgdGhlaXIKICogbm9uLWVudW1lcmFibGUgcHJvcGVydGllcyBhdHRhY2hlZC4KICoKICogQHBhcmFtIHZhbHVlIEluaXRpYWwgc291cmNlIHRoYXQgd2UgaGF2ZSB0byB0cmFuc2Zvcm0gaW4gb3JkZXIgZm9yIGl0IHRvIGJlIHVzYWJsZSBieSB0aGUgc2VyaWFsaXplcgogKiBAcmV0dXJucyBBbiBFdmVudCBvciBFcnJvciB0dXJuZWQgaW50byBhbiBvYmplY3QgLSBvciB0aGUgdmFsdWUgYXJndXJtZW50IGl0c2VsZiwgd2hlbiB2YWx1ZSBpcyBuZWl0aGVyIGFuIEV2ZW50IG5vcgogKiAgYW4gRXJyb3IuCiAqLwpmdW5jdGlvbiBjb252ZXJ0VG9QbGFpbk9iamVjdCgKICB2YWx1ZSwKKQoKIHsKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIHJldHVybiB7CiAgICAgIG1lc3NhZ2U6IHZhbHVlLm1lc3NhZ2UsCiAgICAgIG5hbWU6IHZhbHVlLm5hbWUsCiAgICAgIHN0YWNrOiB2YWx1ZS5zdGFjaywKICAgICAgLi4uZ2V0T3duUHJvcGVydGllcyh2YWx1ZSksCiAgICB9OwogIH0gZWxzZSBpZiAoaXNFdmVudCh2YWx1ZSkpIHsKICAgIGNvbnN0IG5ld09iagoKID0gewogICAgICB0eXBlOiB2YWx1ZS50eXBlLAogICAgICB0YXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLnRhcmdldCksCiAgICAgIGN1cnJlbnRUYXJnZXQ6IHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHZhbHVlLmN1cnJlbnRUYXJnZXQpLAogICAgICAuLi5nZXRPd25Qcm9wZXJ0aWVzKHZhbHVlKSwKICAgIH07CgogICAgaWYgKHR5cGVvZiBDdXN0b21FdmVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNJbnN0YW5jZU9mKHZhbHVlLCBDdXN0b21FdmVudCkpIHsKICAgICAgbmV3T2JqLmRldGFpbCA9IHZhbHVlLmRldGFpbDsKICAgIH0KCiAgICByZXR1cm4gbmV3T2JqOwogIH0gZWxzZSB7CiAgICByZXR1cm4gdmFsdWU7CiAgfQp9CgovKiogQ3JlYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFyZ2V0IG9mIGFuIGBFdmVudGAgb2JqZWN0ICovCmZ1bmN0aW9uIHNlcmlhbGl6ZUV2ZW50VGFyZ2V0KHRhcmdldCkgewogIHRyeSB7CiAgICByZXR1cm4gaXNFbGVtZW50KHRhcmdldCkgPyBodG1sVHJlZUFzU3RyaW5nKHRhcmdldCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFyZ2V0KTsKICB9IGNhdGNoIChfb08pIHsKICAgIHJldHVybiAnPHVua25vd24+JzsKICB9Cn0KCi8qKiBGaWx0ZXJzIG91dCBhbGwgYnV0IGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzICovCmZ1bmN0aW9uIGdldE93blByb3BlcnRpZXMob2JqKSB7CiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkgewogICAgY29uc3QgZXh0cmFjdGVkUHJvcHMgPSB7fTsKICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqKSB7CiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wZXJ0eSkpIHsKICAgICAgICBleHRyYWN0ZWRQcm9wc1twcm9wZXJ0eV0gPSAob2JqIClbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZXh0cmFjdGVkUHJvcHM7CiAgfSBlbHNlIHsKICAgIHJldHVybiB7fTsKICB9Cn0KCi8qKgogKiBHaXZlbiBhbnkgb2JqZWN0LCByZXR1cm4gYSBuZXcgb2JqZWN0IGhhdmluZyByZW1vdmVkIGFsbCBmaWVsZHMgd2hvc2UgdmFsdWUgd2FzIGB1bmRlZmluZWRgLgogKiBXb3JrcyByZWN1cnNpdmVseSBvbiBvYmplY3RzIGFuZCBhcnJheXMuCiAqCiAqIEF0dGVudGlvbjogVGhpcyBmdW5jdGlvbiBrZWVwcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSByZXR1cm5lZCBvYmplY3QuCiAqLwpmdW5jdGlvbiBkcm9wVW5kZWZpbmVkS2V5cyhpbnB1dFZhbHVlKSB7CiAgLy8gVGhpcyBtYXAga2VlcHMgdHJhY2sgb2Ygd2hhdCBhbHJlYWR5IHZpc2l0ZWQgbm9kZXMgbWFwIHRvLgogIC8vIE91ciBTZXQgLSBiYXNlZCBtZW1vQnVpbGRlciBkb2Vzbid0IHdvcmsgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gdGhlIG91dHB1dCBvYmplY3QgdG8gaGF2ZSB0aGUgc2FtZSBjaXJjdWxhcgogIC8vIHJlZmVyZW5jZXMgYXMgdGhlIGlucHV0IG9iamVjdC4KICBjb25zdCBtZW1vaXphdGlvbk1hcCA9IG5ldyBNYXAoKTsKCiAgLy8gVGhpcyBmdW5jdGlvbiBqdXN0IHByb3hpZXMgYF9kcm9wVW5kZWZpbmVkS2V5c2AgdG8ga2VlcCB0aGUgYG1lbW9CdWlsZGVyYCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIEFQSQogIHJldHVybiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApOwp9CgpmdW5jdGlvbiBfZHJvcFVuZGVmaW5lZEtleXMoaW5wdXRWYWx1ZSwgbWVtb2l6YXRpb25NYXApIHsKICBpZiAoaXNQb2pvKGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBvYmplY3QgaXQgd2FzIG1hcHBlZCB0byBpbiB0aGUgbmV3IG9iamVjdAogICAgY29uc3QgbWVtb1ZhbCA9IG1lbW9pemF0aW9uTWFwLmdldChpbnB1dFZhbHVlKTsKICAgIGlmIChtZW1vVmFsICE9PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIG1lbW9WYWwgOwogICAgfQoKICAgIGNvbnN0IHJldHVyblZhbHVlID0ge307CiAgICAvLyBTdG9yZSB0aGUgbWFwcGluZyBvZiB0aGlzIHZhbHVlIGluIGNhc2Ugd2UgdmlzaXQgaXQgYWdhaW4sIGluIGNhc2Ugb2YgY2lyY3VsYXIgZGF0YQogICAgbWVtb2l6YXRpb25NYXAuc2V0KGlucHV0VmFsdWUsIHJldHVyblZhbHVlKTsKCiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhpbnB1dFZhbHVlKSkgewogICAgICBpZiAodHlwZW9mIGlucHV0VmFsdWVba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICByZXR1cm5WYWx1ZVtrZXldID0gX2Ryb3BVbmRlZmluZWRLZXlzKGlucHV0VmFsdWVba2V5XSwgbWVtb2l6YXRpb25NYXApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIGlmIChBcnJheS5pc0FycmF5KGlucHV0VmFsdWUpKSB7CiAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGR1ZSB0byBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgcmV0dXJuIHRoZSBhcnJheSBpdCB3YXMgbWFwcGVkIHRvIGluIHRoZSBuZXcgb2JqZWN0CiAgICBjb25zdCBtZW1vVmFsID0gbWVtb2l6YXRpb25NYXAuZ2V0KGlucHV0VmFsdWUpOwogICAgaWYgKG1lbW9WYWwgIT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gbWVtb1ZhbCA7CiAgICB9CgogICAgY29uc3QgcmV0dXJuVmFsdWUgPSBbXTsKICAgIC8vIFN0b3JlIHRoZSBtYXBwaW5nIG9mIHRoaXMgdmFsdWUgaW4gY2FzZSB3ZSB2aXNpdCBpdCBhZ2FpbiwgaW4gY2FzZSBvZiBjaXJjdWxhciBkYXRhCiAgICBtZW1vaXphdGlvbk1hcC5zZXQoaW5wdXRWYWx1ZSwgcmV0dXJuVmFsdWUpOwoKICAgIGlucHV0VmFsdWUuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICByZXR1cm5WYWx1ZS5wdXNoKF9kcm9wVW5kZWZpbmVkS2V5cyhpdGVtLCBtZW1vaXphdGlvbk1hcCkpOwogICAgfSk7CgogICAgcmV0dXJuIHJldHVyblZhbHVlIDsKICB9CgogIHJldHVybiBpbnB1dFZhbHVlOwp9CgpmdW5jdGlvbiBpc1Bvam8oaW5wdXQpIHsKICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICB0cnkgewogICAgY29uc3QgbmFtZSA9IChPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5wdXQpICkuY29uc3RydWN0b3IubmFtZTsKICAgIHJldHVybiAhbmFtZSB8fCBuYW1lID09PSAnT2JqZWN0JzsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KCi8qKgogKiBEb2VzIHRoaXMgZmlsZW5hbWUgbG9vayBsaWtlIGl0J3MgcGFydCBvZiB0aGUgYXBwIGNvZGU/CiAqLwpmdW5jdGlvbiBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUsIGlzTmF0aXZlID0gZmFsc2UpIHsKICBjb25zdCBpc0ludGVybmFsID0KICAgIGlzTmF0aXZlIHx8CiAgICAoZmlsZW5hbWUgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSBsaW51eCBwYXRoCiAgICAgICFmaWxlbmFtZS5zdGFydHNXaXRoKCcvJykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgaXQncyBhbiBhYnNvbHV0ZSB3aW5kb3dzIHBhdGgKICAgICAgIWZpbGVuYW1lLm1hdGNoKC9eW0EtWl06LykgJiYKICAgICAgLy8gSXQncyBub3QgaW50ZXJuYWwgaWYgdGhlIHBhdGggaXMgc3RhcnRpbmcgd2l0aCBhIGRvdAogICAgICAhZmlsZW5hbWUuc3RhcnRzV2l0aCgnLicpICYmCiAgICAgIC8vIEl0J3Mgbm90IGludGVybmFsIGlmIHRoZSBmcmFtZSBoYXMgYSBwcm90b2NvbC4gSW4gbm9kZSwgdGhpcyBpcyB1c3VhbGx5IHRoZSBjYXNlIGlmIHRoZSBmaWxlIGdvdCBwcmUtcHJvY2Vzc2VkIHdpdGggYSBidW5kbGVyIGxpa2Ugd2VicGFjawogICAgICAhZmlsZW5hbWUubWF0Y2goL15bYS16QS1aXShbYS16QS1aMC05LlwtK10pKjpcL1wvLykpOyAvLyBTY2hlbWEgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM2NDE3ODIKCiAgLy8gaW5fYXBwIGlzIGFsbCB0aGF0J3Mgbm90IGFuIGludGVybmFsIE5vZGUgZnVuY3Rpb24gb3IgYSBtb2R1bGUgd2l0aGluIG5vZGVfbW9kdWxlcwogIC8vIG5vdGUgdGhhdCBpc05hdGl2ZSBhcHBlYXJzIHRvIHJldHVybiB0cnVlIGV2ZW4gZm9yIG5vZGUgY29yZSBsaWJyYXJpZXMKICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1ub2RlL2lzc3Vlcy8xNzYKCiAgcmV0dXJuICFpc0ludGVybmFsICYmIGZpbGVuYW1lICE9PSB1bmRlZmluZWQgJiYgIWZpbGVuYW1lLmluY2x1ZGVzKCdub2RlX21vZHVsZXMvJyk7Cn0KCmNvbnN0IFNUQUNLVFJBQ0VfRlJBTUVfTElNSVQgPSA1MDsKY29uc3QgU1RSSVBfRlJBTUVfUkVHRVhQID0gL2NhcHR1cmVNZXNzYWdlfGNhcHR1cmVFeGNlcHRpb24vOwoKLyoqCiAqIFJlbW92ZXMgU2VudHJ5IGZyYW1lcyBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc3RhY2sgaWYgcHJlc2VudCBhbmQgZW5mb3JjZXMgYSBsaW1pdCBvZiBtYXggbnVtYmVyIG9mIGZyYW1lcy4KICogQXNzdW1lcyBzdGFjayBpbnB1dCBpcyBvcmRlcmVkIGZyb20gdG9wIHRvIGJvdHRvbSBhbmQgcmV0dXJucyB0aGUgcmV2ZXJzZSByZXByZXNlbnRhdGlvbiBzbyBjYWxsIHNpdGUgb2YgdGhlCiAqIGZ1bmN0aW9uIHRoYXQgY2F1c2VkIHRoZSBjcmFzaCBpcyB0aGUgbGFzdCBmcmFtZSBpbiB0aGUgYXJyYXkuCiAqIEBoaWRkZW4KICovCmZ1bmN0aW9uIHN0cmlwU2VudHJ5RnJhbWVzQW5kUmV2ZXJzZShzdGFjaykgewogIGlmICghc3RhY2subGVuZ3RoKSB7CiAgICByZXR1cm4gW107CiAgfQoKICBjb25zdCBsb2NhbFN0YWNrID0gQXJyYXkuZnJvbShzdGFjayk7CgogIC8vIElmIHN0YWNrIHN0YXJ0cyB3aXRoIG9uZSBvZiBvdXIgQVBJIGNhbGxzLCByZW1vdmUgaXQgKHN0YXJ0cywgbWVhbmluZyBpdCdzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIC0gYWthIGxhc3QgY2FsbCkKICBpZiAoL3NlbnRyeVdyYXBwZWQvLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgbG9jYWxTdGFjay5wb3AoKTsKICB9CgogIC8vIFJldmVyc2luZyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcm9jZWR1cmUgYWxsb3dzIHVzIHRvIGp1c3QgcG9wIHRoZSB2YWx1ZXMgb2ZmIHRoZSBzdGFjawogIGxvY2FsU3RhY2sucmV2ZXJzZSgpOwoKICAvLyBJZiBzdGFjayBlbmRzIHdpdGggb25lIG9mIG91ciBpbnRlcm5hbCBBUEkgY2FsbHMsIHJlbW92ZSBpdCAoZW5kcywgbWVhbmluZyBpdCdzIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrIC0gYWthIHRvcC1tb3N0IGNhbGwpCiAgaWYgKFNUUklQX0ZSQU1FX1JFR0VYUC50ZXN0KGxvY2FsU3RhY2tbbG9jYWxTdGFjay5sZW5ndGggLSAxXS5mdW5jdGlvbiB8fCAnJykpIHsKICAgIGxvY2FsU3RhY2sucG9wKCk7CgogICAgLy8gV2hlbiB1c2luZyBzeW50aGV0aWMgZXZlbnRzLCB3ZSB3aWxsIGhhdmUgYSAyIGxldmVscyBkZWVwIHN0YWNrLCBhcyBgbmV3IEVycm9yKCdTZW50cnkgc3ludGhldGljRXhjZXB0aW9uJylgCiAgICAvLyBpcyBwcm9kdWNlZCB3aXRoaW4gdGhlIGh1YiBpdHNlbGYsIG1ha2luZyBpdDoKICAgIC8vCiAgICAvLyAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKCkKICAgIC8vICAgZ2V0Q3VycmVudEh1YigpLmNhcHR1cmVFeGNlcHRpb24oKQogICAgLy8KICAgIC8vIGluc3RlYWQgb2YganVzdCB0aGUgdG9wIGBTZW50cnlgIGNhbGwgaXRzZWxmLgogICAgLy8gVGhpcyBmb3JjZXMgdXMgdG8gcG9zc2libHkgc3RyaXAgYW4gYWRkaXRpb25hbCBmcmFtZSBpbiB0aGUgZXhhY3Qgc2FtZSB3YXMgYXMgYWJvdmUuCiAgICBpZiAoU1RSSVBfRlJBTUVfUkVHRVhQLnRlc3QobG9jYWxTdGFja1tsb2NhbFN0YWNrLmxlbmd0aCAtIDFdLmZ1bmN0aW9uIHx8ICcnKSkgewogICAgICBsb2NhbFN0YWNrLnBvcCgpOwogICAgfQogIH0KCiAgcmV0dXJuIGxvY2FsU3RhY2suc2xpY2UoMCwgU1RBQ0tUUkFDRV9GUkFNRV9MSU1JVCkubWFwKGZyYW1lID0+ICh7CiAgICAuLi5mcmFtZSwKICAgIGZpbGVuYW1lOiBmcmFtZS5maWxlbmFtZSB8fCBsb2NhbFN0YWNrW2xvY2FsU3RhY2subGVuZ3RoIC0gMV0uZmlsZW5hbWUsCiAgICBmdW5jdGlvbjogZnJhbWUuZnVuY3Rpb24gfHwgJz8nLAogIH0pKTsKfQoKY29uc3QgZGVmYXVsdEZ1bmN0aW9uTmFtZSA9ICc8YW5vbnltb3VzPic7CgovKioKICogU2FmZWx5IGV4dHJhY3QgZnVuY3Rpb24gbmFtZSBmcm9tIGl0c2VsZgogKi8KZnVuY3Rpb24gZ2V0RnVuY3Rpb25OYW1lKGZuKSB7CiAgdHJ5IHsKICAgIGlmICghZm4gfHwgdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogICAgfQogICAgcmV0dXJuIGZuLm5hbWUgfHwgZGVmYXVsdEZ1bmN0aW9uTmFtZTsKICB9IGNhdGNoIChlKSB7CiAgICAvLyBKdXN0IGFjY2Vzc2luZyBjdXN0b20gcHJvcHMgaW4gc29tZSBTZWxlbml1bSBlbnZpcm9ubWVudHMKICAgIC8vIGNhbiBjYXVzZSBhICJQZXJtaXNzaW9uIGRlbmllZCIgZXhjZXB0aW9uIChzZWUgcmF2ZW4tanMjNDk1KS4KICAgIHJldHVybiBkZWZhdWx0RnVuY3Rpb25OYW1lOwogIH0KfQoKLyoqCiAqIFVVSUQ0IGdlbmVyYXRvcgogKgogKiBAcmV0dXJucyBzdHJpbmcgR2VuZXJhdGVkIFVVSUQ0LgogKi8KZnVuY3Rpb24gdXVpZDQoKSB7CiAgY29uc3QgZ2JsID0gR0xPQkFMX09CSiA7CiAgY29uc3QgY3J5cHRvID0gZ2JsLmNyeXB0byB8fCBnYmwubXNDcnlwdG87CgogIGxldCBnZXRSYW5kb21CeXRlID0gKCkgPT4gTWF0aC5yYW5kb20oKSAqIDE2OwogIHRyeSB7CiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21VVUlEKSB7CiAgICAgIHJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpLnJlcGxhY2UoLy0vZywgJycpOwogICAgfQogICAgaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7CiAgICAgIGdldFJhbmRvbUJ5dGUgPSAoKSA9PiB7CiAgICAgICAgLy8gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBtaWdodCByZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgdGhlIHR5cGVkIGFycmF5CiAgICAgICAgLy8gaW4gb2xkIENocm9taXVtIHZlcnNpb25zIChlLmcuIDIzLjAuMTIzNS4wICgxNTE0MjIpKQogICAgICAgIC8vIEhvd2V2ZXIsIGB0eXBlZEFycmF5YCBpcyBzdGlsbCBmaWxsZWQgaW4tcGxhY2UuCiAgICAgICAgLy8gQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlcyN0eXBlZGFycmF5CiAgICAgICAgY29uc3QgdHlwZWRBcnJheSA9IG5ldyBVaW50OEFycmF5KDEpOwogICAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModHlwZWRBcnJheSk7CiAgICAgICAgcmV0dXJuIHR5cGVkQXJyYXlbMF07CiAgICAgIH07CiAgICB9CiAgfSBjYXRjaCAoXykgewogICAgLy8gc29tZSBydW50aW1lcyBjYW4gY3Jhc2ggaW52b2tpbmcgY3J5cHRvCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy84OTM1CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjExNzUyMyMyMTE3NTIzCiAgLy8gQ29uY2F0ZW5hdGluZyB0aGUgZm9sbG93aW5nIG51bWJlcnMgYXMgc3RyaW5ncyByZXN1bHRzIGluICcxMDAwMDAwMDEwMDA0MDAwODAwMDEwMDAwMDAwMDAwMCcKICByZXR1cm4gKChbMWU3XSApICsgMWUzICsgNGUzICsgOGUzICsgMWUxMSkucmVwbGFjZSgvWzAxOF0vZywgYyA9PgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UKICAgICgoYyApIF4gKChnZXRSYW5kb21CeXRlKCkgJiAxNSkgPj4gKChjICkgLyA0KSkpLnRvU3RyaW5nKDE2KSwKICApOwp9CgovKioKICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGlucHV0IGlzIGFscmVhZHkgYW4gYXJyYXksIGFuZCBpZiBpdCBpc24ndCwgd3JhcHMgaXQgaW4gb25lLgogKgogKiBAcGFyYW0gbWF5YmVBcnJheSBJbnB1dCB0byB0dXJuIGludG8gYW4gYXJyYXksIGlmIG5lY2Vzc2FyeQogKiBAcmV0dXJucyBUaGUgaW5wdXQsIGlmIGFscmVhZHkgYW4gYXJyYXksIG9yIGFuIGFycmF5IHdpdGggdGhlIGlucHV0IGFzIHRoZSBvbmx5IGVsZW1lbnQsIGlmIG5vdAogKi8KZnVuY3Rpb24gYXJyYXlpZnkobWF5YmVBcnJheSkgewogIHJldHVybiBBcnJheS5pc0FycmF5KG1heWJlQXJyYXkpID8gbWF5YmVBcnJheSA6IFttYXliZUFycmF5XTsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzICovCi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi8KCi8qKgogKiBIZWxwZXIgdG8gZGVjeWNsZSBqc29uIG9iamVjdHMKICovCmZ1bmN0aW9uIG1lbW9CdWlsZGVyKCkgewogIGNvbnN0IGhhc1dlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJzsKICBjb25zdCBpbm5lciA9IGhhc1dlYWtTZXQgPyBuZXcgV2Vha1NldCgpIDogW107CiAgZnVuY3Rpb24gbWVtb2l6ZShvYmopIHsKICAgIGlmIChoYXNXZWFrU2V0KSB7CiAgICAgIGlmIChpbm5lci5oYXMob2JqKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIGlubmVyLmFkZChvYmopOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2YKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5uZXIubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc3QgdmFsdWUgPSBpbm5lcltpXTsKICAgICAgaWYgKHZhbHVlID09PSBvYmopIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQogICAgaW5uZXIucHVzaChvYmopOwogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gdW5tZW1vaXplKG9iaikgewogICAgaWYgKGhhc1dlYWtTZXQpIHsKICAgICAgaW5uZXIuZGVsZXRlKG9iaik7CiAgICB9IGVsc2UgewogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlubmVyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGlubmVyW2ldID09PSBvYmopIHsKICAgICAgICAgIGlubmVyLnNwbGljZShpLCAxKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICByZXR1cm4gW21lbW9pemUsIHVubWVtb2l6ZV07Cn0KCi8qKgogKiBSZWN1cnNpdmVseSBub3JtYWxpemVzIHRoZSBnaXZlbiBvYmplY3QuCiAqCiAqIC0gQ3JlYXRlcyBhIGNvcHkgdG8gcHJldmVudCBvcmlnaW5hbCBpbnB1dCBtdXRhdGlvbgogKiAtIFNraXBzIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMKICogLSBXaGVuIHN0cmluZ2lmeWluZywgY2FsbHMgYHRvSlNPTmAgaWYgaW1wbGVtZW50ZWQKICogLSBSZW1vdmVzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICogLSBUcmFuc2xhdGVzIG5vbi1zZXJpYWxpemFibGUgdmFsdWVzIChgdW5kZWZpbmVkYC9gTmFOYC9mdW5jdGlvbnMpIHRvIHNlcmlhbGl6YWJsZSBmb3JtYXQKICogLSBUcmFuc2xhdGVzIGtub3duIGdsb2JhbCBvYmplY3RzL2NsYXNzZXMgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25zCiAqIC0gVGFrZXMgY2FyZSBvZiBgRXJyb3JgIG9iamVjdCBzZXJpYWxpemF0aW9uCiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgZGVwdGggb2YgZmluYWwgb3V0cHV0CiAqIC0gT3B0aW9uYWxseSBsaW1pdHMgbnVtYmVyIG9mIHByb3BlcnRpZXMvZWxlbWVudHMgaW5jbHVkZWQgaW4gYW55IHNpbmdsZSBvYmplY3QvYXJyYXkKICoKICogQHBhcmFtIGlucHV0IFRoZSBvYmplY3QgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGRlcHRoIFRoZSBtYXggZGVwdGggdG8gd2hpY2ggdG8gbm9ybWFsaXplIHRoZSBvYmplY3QuIChBbnl0aGluZyBkZWVwZXIgc3RyaW5naWZpZWQgd2hvbGUuKQogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBUaGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBvciBwcm9wZXJ0aWVzIHRvIGJlIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgYXJyYXkgb3IKICogb2JqZWN0IGluIHRoZSBub3JtYWxsaXplZCBvdXRwdXQuCiAqIEByZXR1cm5zIEEgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QsIG9yIGAiKipub24tc2VyaWFsaXphYmxlKioiYCBpZiBhbnkgZXJyb3JzIGFyZSB0aHJvd24gZHVyaW5nIG5vcm1hbGl6YXRpb24uCiAqLwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQpmdW5jdGlvbiBub3JtYWxpemUoaW5wdXQsIGRlcHRoID0gMTAwLCBtYXhQcm9wZXJ0aWVzID0gK0luZmluaXR5KSB7CiAgdHJ5IHsKICAgIC8vIHNpbmNlIHdlJ3JlIGF0IHRoZSBvdXRlcm1vc3QgbGV2ZWwsIHdlIGRvbid0IHByb3ZpZGUgYSBrZXkKICAgIHJldHVybiB2aXNpdCgnJywgaW5wdXQsIGRlcHRoLCBtYXhQcm9wZXJ0aWVzKTsKICB9IGNhdGNoIChlcnIpIHsKICAgIHJldHVybiB7IEVSUk9SOiBgKipub24tc2VyaWFsaXphYmxlKiogKCR7ZXJyfSlgIH07CiAgfQp9CgovKioKICogVmlzaXRzIGEgbm9kZSB0byBwZXJmb3JtIG5vcm1hbGl6YXRpb24gb24gaXQKICoKICogQHBhcmFtIGtleSBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5vZGUKICogQHBhcmFtIHZhbHVlIFRoZSBub2RlIHRvIGJlIHZpc2l0ZWQKICogQHBhcmFtIGRlcHRoIE9wdGlvbmFsIG51bWJlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aAogKiBAcGFyYW0gbWF4UHJvcGVydGllcyBPcHRpb25hbCBtYXhpbXVtIG51bWJlciBvZiBwcm9wZXJ0aWVzL2VsZW1lbnRzIGluY2x1ZGVkIGluIGFueSBzaW5nbGUgb2JqZWN0L2FycmF5CiAqIEBwYXJhbSBtZW1vIE9wdGlvbmFsIE1lbW8gY2xhc3MgaGFuZGxpbmcgZGVjeWNsaW5nCiAqLwpmdW5jdGlvbiB2aXNpdCgKICBrZXksCiAgdmFsdWUsCiAgZGVwdGggPSArSW5maW5pdHksCiAgbWF4UHJvcGVydGllcyA9ICtJbmZpbml0eSwKICBtZW1vID0gbWVtb0J1aWxkZXIoKSwKKSB7CiAgY29uc3QgW21lbW9pemUsIHVubWVtb2l6ZV0gPSBtZW1vOwoKICAvLyBHZXQgdGhlIHNpbXBsZSBjYXNlcyBvdXQgb2YgdGhlIHdheSBmaXJzdAogIGlmICgKICAgIHZhbHVlID09IG51bGwgfHwgLy8gdGhpcyBtYXRjaGVzIG51bGwgYW5kIHVuZGVmaW5lZCAtPiBlcWVxIG5vdCBlcWVxZXEKICAgIChbJ251bWJlcicsICdib29sZWFuJywgJ3N0cmluZyddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkgJiYgIWlzTmFOJDEodmFsdWUpKQogICkgewogICAgcmV0dXJuIHZhbHVlIDsKICB9CgogIGNvbnN0IHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5VmFsdWUoa2V5LCB2YWx1ZSk7CgogIC8vIEFueXRoaW5nIHdlIGNvdWxkIHBvdGVudGlhbGx5IGRpZyBpbnRvIG1vcmUgKG9iamVjdHMgb3IgYXJyYXlzKSB3aWxsIGhhdmUgY29tZSBiYWNrIGFzIGAiW29iamVjdCBYWFhYXSJgLgogIC8vIEV2ZXJ5dGhpbmcgZWxzZSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIHNlcmlhbGl6ZWQsIHNvIGlmIHdlIGRvbid0IHNlZSB0aGF0IHBhdHRlcm4sIHdlJ3JlIGRvbmUuCiAgaWYgKCFzdHJpbmdpZmllZC5zdGFydHNXaXRoKCdbb2JqZWN0ICcpKSB7CiAgICByZXR1cm4gc3RyaW5naWZpZWQ7CiAgfQoKICAvLyBGcm9tIGhlcmUgb24sIHdlIGNhbiBhc3NlcnQgdGhhdCBgdmFsdWVgIGlzIGVpdGhlciBhbiBvYmplY3Qgb3IgYW4gYXJyYXkuCgogIC8vIERvIG5vdCBub3JtYWxpemUgb2JqZWN0cyB0aGF0IHdlIGtub3cgaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gQXMgYSBnZW5lcmFsIHJ1bGUsIHRoZQogIC8vICJfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyIgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgdXNlZCBzcGFyaW5nbHkgYW5kIG9ubHkgc2hvdWxkIG9ubHkgYmUgc2V0IG9uIG9iamVjdHMgdGhhdAogIC8vIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuCiAgaWYgKCh2YWx1ZSApWydfX3NlbnRyeV9za2lwX25vcm1hbGl6YXRpb25fXyddKSB7CiAgICByZXR1cm4gdmFsdWUgOwogIH0KCiAgLy8gV2UgY2FuIHNldCBgX19zZW50cnlfb3ZlcnJpZGVfbm9ybWFsaXphdGlvbl9kZXB0aF9fYCBvbiBhbiBvYmplY3QgdG8gZW5zdXJlIHRoYXQgZnJvbSB0aGVyZQogIC8vIFdlIGtlZXAgYSBjZXJ0YWluIGFtb3VudCBvZiBkZXB0aC4KICAvLyBUaGlzIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgZS5nLiB3ZSB1c2UgaXQgZm9yIHRoZSByZWR1eCBpbnRlZ3JhdGlvbiB0byBlbnN1cmUgd2UgZ2V0IGEgY2VydGFpbiBhbW91bnQgb2Ygc3RhdGUuCiAgY29uc3QgcmVtYWluaW5nRGVwdGggPQogICAgdHlwZW9mICh2YWx1ZSApWydfX3NlbnRyeV9vdmVycmlkZV9ub3JtYWxpemF0aW9uX2RlcHRoX18nXSA9PT0gJ251bWJlcicKICAgICAgPyAoKHZhbHVlIClbJ19fc2VudHJ5X292ZXJyaWRlX25vcm1hbGl6YXRpb25fZGVwdGhfXyddICkKICAgICAgOiBkZXB0aDsKCiAgLy8gV2UncmUgYWxzbyBkb25lIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heCBkZXB0aAogIGlmIChyZW1haW5pbmdEZXB0aCA9PT0gMCkgewogICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGBzZXJpYWxpemVkYCBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybSBgIltvYmplY3QgWFhYWF0iYC4gQ2xlYW4gaXQgdXAgc28gaXQncyBqdXN0IGAiW1hYWFhdImAuCiAgICByZXR1cm4gc3RyaW5naWZpZWQucmVwbGFjZSgnb2JqZWN0ICcsICcnKTsKICB9CgogIC8vIElmIHdlJ3ZlIGFscmVhZHkgdmlzaXRlZCB0aGlzIGJyYW5jaCwgYmFpbCBvdXQsIGFzIGl0J3MgY2lyY3VsYXIgcmVmZXJlbmNlLiBJZiBub3QsIG5vdGUgdGhhdCB3ZSdyZSBzZWVpbmcgaXQgbm93LgogIGlmIChtZW1vaXplKHZhbHVlKSkgewogICAgcmV0dXJuICdbQ2lyY3VsYXIgfl0nOwogIH0KCiAgLy8gSWYgdGhlIHZhbHVlIGhhcyBhIGB0b0pTT05gIG1ldGhvZCwgd2UgY2FsbCBpdCB0byBleHRyYWN0IG1vcmUgaW5mb3JtYXRpb24KICBjb25zdCB2YWx1ZVdpdGhUb0pTT04gPSB2YWx1ZSA7CiAgaWYgKHZhbHVlV2l0aFRvSlNPTiAmJiB0eXBlb2YgdmFsdWVXaXRoVG9KU09OLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgdHJ5IHsKICAgICAgY29uc3QganNvblZhbHVlID0gdmFsdWVXaXRoVG9KU09OLnRvSlNPTigpOwogICAgICAvLyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGAudG9KU09OKClgIGluIGNhc2UgaXQgaGFzIGNpcmN1bGFyIHJlZmVyZW5jZXMKICAgICAgcmV0dXJuIHZpc2l0KCcnLCBqc29uVmFsdWUsIHJlbWFpbmluZ0RlcHRoIC0gMSwgbWF4UHJvcGVydGllcywgbWVtbyk7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gcGFzcyAoVGhlIGJ1aWx0LWluIGB0b0pTT05gIGZhaWxlZCwgYnV0IHdlIGNhbiBzdGlsbCB0cnkgdG8gZG8gaXQgb3Vyc2VsdmVzKQogICAgfQogIH0KCiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlIGVpdGhlciBoYXZlIGFuIG9iamVjdCBvciBhbiBhcnJheSwgd2UgaGF2ZW4ndCBzZWVuIGl0IGJlZm9yZSwgYW5kIHdlJ3JlIGdvaW5nIHRvIHJlY3Vyc2UKICAvLyBiZWNhdXNlIHdlIGhhdmVuJ3QgeWV0IHJlYWNoZWQgdGhlIG1heCBkZXB0aC4gQ3JlYXRlIGFuIGFjY3VtdWxhdG9yIHRvIGhvbGQgdGhlIHJlc3VsdHMgb2YgdmlzaXRpbmcgZWFjaAogIC8vIHByb3BlcnR5L2VudHJ5LCBhbmQga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHdlIGFkZCB0byBpdC4KICBjb25zdCBub3JtYWxpemVkID0gKEFycmF5LmlzQXJyYXkodmFsdWUpID8gW10gOiB7fSkgOwogIGxldCBudW1BZGRlZCA9IDA7CgogIC8vIEJlZm9yZSB3ZSBiZWdpbiwgY29udmVydGBFcnJvcmAgYW5kYEV2ZW50YCBpbnN0YW5jZXMgaW50byBwbGFpbiBvYmplY3RzLCBzaW5jZSBzb21lIG9mIGVhY2ggb2YgdGhlaXIgcmVsZXZhbnQKICAvLyBwcm9wZXJ0aWVzIGFyZSBub24tZW51bWVyYWJsZSBhbmQgb3RoZXJ3aXNlIHdvdWxkIGdldCBtaXNzZWQuCiAgY29uc3QgdmlzaXRhYmxlID0gY29udmVydFRvUGxhaW5PYmplY3QodmFsdWUgKTsKCiAgZm9yIChjb25zdCB2aXNpdEtleSBpbiB2aXNpdGFibGUpIHsKICAgIC8vIEF2b2lkIGl0ZXJhdGluZyBvdmVyIGZpZWxkcyBpbiB0aGUgcHJvdG90eXBlIGlmIHRoZXkndmUgc29tZWhvdyBiZWVuIGV4cG9zZWQgdG8gZW51bWVyYXRpb24uCiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2aXNpdGFibGUsIHZpc2l0S2V5KSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAobnVtQWRkZWQgPj0gbWF4UHJvcGVydGllcykgewogICAgICBub3JtYWxpemVkW3Zpc2l0S2V5XSA9ICdbTWF4UHJvcGVydGllcyB+XSc7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIC8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGFsbCB0aGUgY2hpbGQgbm9kZXMKICAgIGNvbnN0IHZpc2l0VmFsdWUgPSB2aXNpdGFibGVbdmlzaXRLZXldOwogICAgbm9ybWFsaXplZFt2aXNpdEtleV0gPSB2aXNpdCh2aXNpdEtleSwgdmlzaXRWYWx1ZSwgcmVtYWluaW5nRGVwdGggLSAxLCBtYXhQcm9wZXJ0aWVzLCBtZW1vKTsKCiAgICBudW1BZGRlZCsrOwogIH0KCiAgLy8gT25jZSB3ZSd2ZSB2aXNpdGVkIGFsbCB0aGUgYnJhbmNoZXMsIHJlbW92ZSB0aGUgcGFyZW50IGZyb20gbWVtbyBzdG9yYWdlCiAgdW5tZW1vaXplKHZhbHVlKTsKCiAgLy8gUmV0dXJuIGFjY3VtdWxhdGVkIHZhbHVlcwogIHJldHVybiBub3JtYWxpemVkOwp9CgovKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovCi8qKgogKiBTdHJpbmdpZnkgdGhlIGdpdmVuIHZhbHVlLiBIYW5kbGVzIHZhcmlvdXMga25vd24gc3BlY2lhbCB2YWx1ZXMgYW5kIHR5cGVzLgogKgogKiBOb3QgbWVhbnQgdG8gYmUgdXNlZCBvbiBzaW1wbGUgcHJpbWl0aXZlcyB3aGljaCBhbHJlYWR5IGhhdmUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGFzIGl0IHdpbGwsIGZvciBleGFtcGxlLCB0dXJuCiAqIHRoZSBudW1iZXIgMTIzMSBpbnRvICJbT2JqZWN0IE51bWJlcl0iLCBub3Igb24gYG51bGxgLCBhcyBpdCB3aWxsIHRocm93LgogKgogKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHN0cmluZ2lmeQogKiBAcmV0dXJucyBBIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB2YWx1ZQogKi8KZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUoCiAga2V5LAogIC8vIHRoaXMgdHlwZSBpcyBhIHRpbnkgYml0IG9mIGEgY2hlYXQsIHNpbmNlIHRoaXMgZnVuY3Rpb24gZG9lcyBoYW5kbGUgTmFOICh3aGljaCBpcyB0ZWNobmljYWxseSBhIG51bWJlciksIGJ1dCBmb3IKICAvLyBvdXIgaW50ZXJuYWwgdXNlLCBpdCdsbCBkbwogIHZhbHVlLAopIHsKICB0cnkgewogICAgaWYgKGtleSA9PT0gJ2RvbWFpbicgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAodmFsdWUgKS5fZXZlbnRzKSB7CiAgICAgIHJldHVybiAnW0RvbWFpbl0nOwogICAgfQoKICAgIGlmIChrZXkgPT09ICdkb21haW5FbWl0dGVyJykgewogICAgICByZXR1cm4gJ1tEb21haW5FbWl0dGVyXSc7CiAgICB9CgogICAgLy8gSXQncyBzYWZlIHRvIHVzZSBgZ2xvYmFsYCwgYHdpbmRvd2AsIGFuZCBgZG9jdW1lbnRgIGhlcmUgaW4gdGhpcyBtYW5uZXIsIGFzIHdlIGFyZSBhc3NlcnRpbmcgdXNpbmcgYHR5cGVvZmAgZmlyc3QKICAgIC8vIHdoaWNoIHdvbid0IHRocm93IGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgoKICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gZ2xvYmFsKSB7CiAgICAgIHJldHVybiAnW0dsb2JhbF0nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSA9PT0gd2luZG93KSB7CiAgICAgIHJldHVybiAnW1dpbmRvd10nOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMKICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlID09PSBkb2N1bWVudCkgewogICAgICByZXR1cm4gJ1tEb2N1bWVudF0nOwogICAgfQoKICAgIGlmIChpc1Z1ZVZpZXdNb2RlbCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuICdbVnVlVmlld01vZGVsXSc7CiAgICB9CgogICAgLy8gUmVhY3QncyBTeW50aGV0aWNFdmVudCB0aGluZ3kKICAgIGlmIChpc1N5bnRoZXRpY0V2ZW50KHZhbHVlKSkgewogICAgICByZXR1cm4gJ1tTeW50aGV0aWNFdmVudF0nOwogICAgfQoKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB2YWx1ZSkgewogICAgICByZXR1cm4gJ1tOYU5dJzsKICAgIH0KCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBgW0Z1bmN0aW9uOiAke2dldEZ1bmN0aW9uTmFtZSh2YWx1ZSl9XWA7CiAgICB9CgogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHsKICAgICAgcmV0dXJuIGBbJHtTdHJpbmcodmFsdWUpfV1gOwogICAgfQoKICAgIC8vIHN0cmluZ2lmaWVkIEJpZ0ludHMgYXJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gcmVndWxhciBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGxhYmVsIHRoZW0gdG8gYXZvaWQgY29uZnVzaW9uCiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50JykgewogICAgICByZXR1cm4gYFtCaWdJbnQ6ICR7U3RyaW5nKHZhbHVlKX1dYDsKICAgIH0KCiAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBrbm9ja2VkIG91dCBhbGwgdGhlIHNwZWNpYWwgY2FzZXMgYW5kIHRoZSBwcmltaXRpdmVzLCBhbGwgd2UgaGF2ZSBsZWZ0IGFyZSBvYmplY3RzLiBTaW1wbHkgY2FzdGluZwogICAgLy8gdGhlbSB0byBzdHJpbmdzIG1lYW5zIHRoYXQgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hpY2ggaGF2ZW4ndCBkZWZpbmVkIHRoZWlyIGB0b1N0cmluZ1RhZ2Agd2lsbCBqdXN0IGNvbWUgb3V0IGFzCiAgICAvLyBgIltvYmplY3QgT2JqZWN0XSJgLiBJZiB3ZSBpbnN0ZWFkIGxvb2sgYXQgdGhlIGNvbnN0cnVjdG9yJ3MgbmFtZSAod2hpY2ggaXMgdGhlIHNhbWUgYXMgdGhlIG5hbWUgb2YgdGhlIGNsYXNzKSwKICAgIC8vIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCBvbmx5IHBsYWluIG9iamVjdHMgY29tZSBvdXQgdGhhdCB3YXkuCiAgICBjb25zdCBvYmpOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKTsKCiAgICAvLyBIYW5kbGUgSFRNTCBFbGVtZW50cwogICAgaWYgKC9eSFRNTChcdyopRWxlbWVudCQvLnRlc3Qob2JqTmFtZSkpIHsKICAgICAgcmV0dXJuIGBbSFRNTEVsZW1lbnQ6ICR7b2JqTmFtZX1dYDsKICAgIH0KCiAgICByZXR1cm4gYFtvYmplY3QgJHtvYmpOYW1lfV1gOwogIH0gY2F0Y2ggKGVycikgewogICAgcmV0dXJuIGAqKm5vbi1zZXJpYWxpemFibGUqKiAoJHtlcnJ9KWA7CiAgfQp9Ci8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqLwoKZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JOYW1lKHZhbHVlKSB7CiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTsKCiAgcmV0dXJuIHByb3RvdHlwZSA/IHByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lIDogJ251bGwgcHJvdG90eXBlJzsKfQoKLyoqCiAqIE5vcm1hbGl6ZXMgVVJMcyBpbiBleGNlcHRpb25zIGFuZCBzdGFja3RyYWNlcyB0byBhIGJhc2UgcGF0aCBzbyBTZW50cnkgY2FuIGZpbmdlcnByaW50CiAqIGFjcm9zcyBwbGF0Zm9ybXMgYW5kIHdvcmtpbmcgZGlyZWN0b3J5LgogKgogKiBAcGFyYW0gdXJsIFRoZSBVUkwgdG8gYmUgbm9ybWFsaXplZC4KICogQHBhcmFtIGJhc2VQYXRoIFRoZSBhcHBsaWNhdGlvbiBiYXNlIHBhdGguCiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIFVSTC4KICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVVybFRvQmFzZSh1cmwsIGJhc2VQYXRoKSB7CiAgY29uc3QgZXNjYXBlZEJhc2UgPSBiYXNlUGF0aAogICAgLy8gQmFja3NsYXNoIHRvIGZvcndhcmQKICAgIC5yZXBsYWNlKC9cXC9nLCAnLycpCiAgICAvLyBFc2NhcGUgUmVnRXhwIHNwZWNpYWwgY2hhcmFjdGVycwogICAgLnJlcGxhY2UoL1t8XFx7fSgpW1xdXiQrKj8uXS9nLCAnXFwkJicpOwoKICBsZXQgbmV3VXJsID0gdXJsOwogIHRyeSB7CiAgICBuZXdVcmwgPSBkZWNvZGVVUkkodXJsKTsKICB9IGNhdGNoIChfT28pIHsKICAgIC8vIFNvbWV0aW1lIHRoaXMgYnJlYWtzCiAgfQogIHJldHVybiAoCiAgICBuZXdVcmwKICAgICAgLnJlcGxhY2UoL1xcL2csICcvJykKICAgICAgLnJlcGxhY2UoL3dlYnBhY2s6XC8/L2csICcnKSAvLyBSZW1vdmUgaW50ZXJtZWRpYXRlIGJhc2UgcGF0aAogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHNlbnRyeS1pbnRlcm5hbC9zZGsvbm8tcmVnZXhwLWNvbnN0cnVjdG9yCiAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYChmaWxlOi8vKT8vKiR7ZXNjYXBlZEJhc2V9LypgLCAnaWcnKSwgJ2FwcDovLy8nKQogICk7Cn0KCi8vIFNsaWdodGx5IG1vZGlmaWVkIChubyBJRTggc3VwcG9ydCwgRVM2KSBhbmQgdHJhbnNjcmliZWQgdG8gVHlwZVNjcmlwdAoKLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb24KLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy4KY29uc3Qgc3BsaXRQYXRoUmUgPSAvXihcUys6XFx8XC8/KShbXHNcU10qPykoKD86XC57MSwyfXxbXi9cXF0rP3wpKFwuW14uL1xcXSp8KSkoPzpbL1xcXSopJC87Ci8qKiBKU0RvYyAqLwpmdW5jdGlvbiBzcGxpdFBhdGgoZmlsZW5hbWUpIHsKICAvLyBUcnVuY2F0ZSBmaWxlcyBuYW1lcyBncmVhdGVyIHRoYW4gMTAyNCBjaGFyYWN0ZXJzIHRvIGF2b2lkIHJlZ2V4IGRvcwogIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvcHVsbC84NzM3I2Rpc2N1c3Npb25fcjEyODU3MTkxNzIKICBjb25zdCB0cnVuY2F0ZWQgPSBmaWxlbmFtZS5sZW5ndGggPiAxMDI0ID8gYDx0cnVuY2F0ZWQ+JHtmaWxlbmFtZS5zbGljZSgtMTAyNCl9YCA6IGZpbGVuYW1lOwogIGNvbnN0IHBhcnRzID0gc3BsaXRQYXRoUmUuZXhlYyh0cnVuY2F0ZWQpOwogIHJldHVybiBwYXJ0cyA/IHBhcnRzLnNsaWNlKDEpIDogW107Cn0KCi8qKiBKU0RvYyAqLwpmdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHsKICBjb25zdCByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCk7CiAgY29uc3Qgcm9vdCA9IHJlc3VsdFswXTsKICBsZXQgZGlyID0gcmVzdWx0WzFdOwoKICBpZiAoIXJvb3QgJiYgIWRpcikgewogICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyCiAgICByZXR1cm4gJy4nOwogIH0KCiAgaWYgKGRpcikgewogICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2gKICAgIGRpciA9IGRpci5zbGljZSgwLCBkaXIubGVuZ3RoIC0gMSk7CiAgfQoKICByZXR1cm4gcm9vdCArIGRpcjsKfQoKLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovCgovKiogU3luY1Byb21pc2UgaW50ZXJuYWwgc3RhdGVzICovCnZhciBTdGF0ZXM7IChmdW5jdGlvbiAoU3RhdGVzKSB7CiAgLyoqIFBlbmRpbmcgKi8KICBjb25zdCBQRU5ESU5HID0gMDsgU3RhdGVzW1N0YXRlc1siUEVORElORyJdID0gUEVORElOR10gPSAiUEVORElORyI7CiAgLyoqIFJlc29sdmVkIC8gT0sgKi8KICBjb25zdCBSRVNPTFZFRCA9IDE7IFN0YXRlc1tTdGF0ZXNbIlJFU09MVkVEIl0gPSBSRVNPTFZFRF0gPSAiUkVTT0xWRUQiOwogIC8qKiBSZWplY3RlZCAvIEVycm9yICovCiAgY29uc3QgUkVKRUNURUQgPSAyOyBTdGF0ZXNbU3RhdGVzWyJSRUpFQ1RFRCJdID0gUkVKRUNURURdID0gIlJFSkVDVEVEIjsKfSkoU3RhdGVzIHx8IChTdGF0ZXMgPSB7fSkpOwoKLy8gT3ZlcmxvYWRzIHNvIHdlIGNhbiBjYWxsIHJlc29sdmVkU3luY1Byb21pc2Ugd2l0aG91dCBhcmd1bWVudHMgYW5kIGdlbmVyaWMgYXJndW1lbnQKCi8qKgogKiBDcmVhdGVzIGEgcmVzb2x2ZWQgc3luYyBwcm9taXNlLgogKgogKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVzb2x2ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZXNvbHZlZFN5bmNQcm9taXNlKHZhbHVlKSB7CiAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZShyZXNvbHZlID0+IHsKICAgIHJlc29sdmUodmFsdWUpOwogIH0pOwp9CgovKioKICogQ3JlYXRlcyBhIHJlamVjdGVkIHN5bmMgcHJvbWlzZS4KICoKICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byByZWplY3QgdGhlIHByb21pc2Ugd2l0aAogKiBAcmV0dXJucyB0aGUgcmVqZWN0ZWQgc3luYyBwcm9taXNlCiAqLwpmdW5jdGlvbiByZWplY3RlZFN5bmNQcm9taXNlKHJlYXNvbikgewogIHJldHVybiBuZXcgU3luY1Byb21pc2UoKF8sIHJlamVjdCkgPT4gewogICAgcmVqZWN0KHJlYXNvbik7CiAgfSk7Cn0KCi8qKgogKiBUaGVuYWJsZSBjbGFzcyB0aGF0IGJlaGF2ZXMgbGlrZSBhIFByb21pc2UgYW5kIGZvbGxvd3MgaXQncyBpbnRlcmZhY2UKICogYnV0IGlzIG5vdCBhc3luYyBpbnRlcm5hbGx5CiAqLwpjbGFzcyBTeW5jUHJvbWlzZSB7CgogICBjb25zdHJ1Y3RvcigKICAgIGV4ZWN1dG9yLAogICkge1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQuY2FsbCh0aGlzKTtTeW5jUHJvbWlzZS5wcm90b3R5cGUuX19pbml0Mi5jYWxsKHRoaXMpO1N5bmNQcm9taXNlLnByb3RvdHlwZS5fX2luaXQzLmNhbGwodGhpcyk7U3luY1Byb21pc2UucHJvdG90eXBlLl9faW5pdDQuY2FsbCh0aGlzKTsKICAgIHRoaXMuX3N0YXRlID0gU3RhdGVzLlBFTkRJTkc7CiAgICB0aGlzLl9oYW5kbGVycyA9IFtdOwoKICAgIHRyeSB7CiAgICAgIGV4ZWN1dG9yKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRoaXMuX3JlamVjdChlKTsKICAgIH0KICB9CgogIC8qKiBKU0RvYyAqLwogICB0aGVuKAogICAgb25mdWxmaWxsZWQsCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIHRoaXMuX2hhbmRsZXJzLnB1c2goWwogICAgICAgIGZhbHNlLAogICAgICAgIHJlc3VsdCA9PiB7CiAgICAgICAgICBpZiAoIW9uZnVsZmlsbGVkKSB7CiAgICAgICAgICAgIC8vIFRPRE86IMKvXF8o44OEKV8vwq8KICAgICAgICAgICAgLy8gVE9ETzogRklYTUUKICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQgKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbmZ1bGZpbGxlZChyZXN1bHQpKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgIHJlamVjdChlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgcmVhc29uID0+IHsKICAgICAgICAgIGlmICghb25yZWplY3RlZCkgewogICAgICAgICAgICByZWplY3QocmVhc29uKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmVzb2x2ZShvbnJlamVjdGVkKHJlYXNvbikpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgcmVqZWN0KGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgXSk7CiAgICAgIHRoaXMuX2V4ZWN1dGVIYW5kbGVycygpOwogICAgfSk7CiAgfQoKICAvKiogSlNEb2MgKi8KICAgY2F0Y2goCiAgICBvbnJlamVjdGVkLAogICkgewogICAgcmV0dXJuIHRoaXMudGhlbih2YWwgPT4gdmFsLCBvbnJlamVjdGVkKTsKICB9CgogIC8qKiBKU0RvYyAqLwogICBmaW5hbGx5KG9uZmluYWxseSkgewogICAgcmV0dXJuIG5ldyBTeW5jUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgIGxldCB2YWw7CiAgICAgIGxldCBpc1JlamVjdGVkOwoKICAgICAgcmV0dXJuIHRoaXMudGhlbigKICAgICAgICB2YWx1ZSA9PiB7CiAgICAgICAgICBpc1JlamVjdGVkID0gZmFsc2U7CiAgICAgICAgICB2YWwgPSB2YWx1ZTsKICAgICAgICAgIGlmIChvbmZpbmFsbHkpIHsKICAgICAgICAgICAgb25maW5hbGx5KCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZWFzb24gPT4gewogICAgICAgICAgaXNSZWplY3RlZCA9IHRydWU7CiAgICAgICAgICB2YWwgPSByZWFzb247CiAgICAgICAgICBpZiAob25maW5hbGx5KSB7CiAgICAgICAgICAgIG9uZmluYWxseSgpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICkudGhlbigoKSA9PiB7CiAgICAgICAgaWYgKGlzUmVqZWN0ZWQpIHsKICAgICAgICAgIHJlamVjdCh2YWwpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmVzb2x2ZSh2YWwgKTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0KCkge3RoaXMuX3Jlc29sdmUgPSAodmFsdWUpID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVTT0xWRUQsIHZhbHVlKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQyKCkge3RoaXMuX3JlamVjdCA9IChyZWFzb24pID0+IHsKICAgIHRoaXMuX3NldFJlc3VsdChTdGF0ZXMuUkVKRUNURUQsIHJlYXNvbik7CiAgfTt9CgogIC8qKiBKU0RvYyAqLwogICAgX19pbml0MygpIHt0aGlzLl9zZXRSZXN1bHQgPSAoc3RhdGUsIHZhbHVlKSA9PiB7CiAgICBpZiAodGhpcy5fc3RhdGUgIT09IFN0YXRlcy5QRU5ESU5HKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZSh2YWx1ZSkpIHsKICAgICAgdm9pZCAodmFsdWUgKS50aGVuKHRoaXMuX3Jlc29sdmUsIHRoaXMuX3JlamVjdCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlOwogICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKCiAgICB0aGlzLl9leGVjdXRlSGFuZGxlcnMoKTsKICB9O30KCiAgLyoqIEpTRG9jICovCiAgICBfX2luaXQ0KCkge3RoaXMuX2V4ZWN1dGVIYW5kbGVycyA9ICgpID0+IHsKICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlBFTkRJTkcpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnN0IGNhY2hlZEhhbmRsZXJzID0gdGhpcy5faGFuZGxlcnMuc2xpY2UoKTsKICAgIHRoaXMuX2hhbmRsZXJzID0gW107CgogICAgY2FjaGVkSGFuZGxlcnMuZm9yRWFjaChoYW5kbGVyID0+IHsKICAgICAgaWYgKGhhbmRsZXJbMF0pIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gU3RhdGVzLlJFU09MVkVEKSB7CiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlcwogICAgICAgIGhhbmRsZXJbMV0odGhpcy5fdmFsdWUgKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMuX3N0YXRlID09PSBTdGF0ZXMuUkVKRUNURUQpIHsKICAgICAgICBoYW5kbGVyWzJdKHRoaXMuX3ZhbHVlKTsKICAgICAgfQoKICAgICAgaGFuZGxlclswXSA9IHRydWU7CiAgICB9KTsKICB9O30KfQoKLyoqCiAqIENyZWF0ZXMgYW4gbmV3IFByb21pc2VCdWZmZXIgb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBsaW1pdAogKiBAcGFyYW0gbGltaXQgbWF4IG51bWJlciBvZiBwcm9taXNlcyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIGJ1ZmZlcgogKi8KZnVuY3Rpb24gbWFrZVByb21pc2VCdWZmZXIobGltaXQpIHsKICBjb25zdCBidWZmZXIgPSBbXTsKCiAgZnVuY3Rpb24gaXNSZWFkeSgpIHsKICAgIHJldHVybiBsaW1pdCA9PT0gdW5kZWZpbmVkIHx8IGJ1ZmZlci5sZW5ndGggPCBsaW1pdDsKICB9CgogIC8qKgogICAqIFJlbW92ZSBhIHByb21pc2UgZnJvbSB0aGUgcXVldWUuCiAgICoKICAgKiBAcGFyYW0gdGFzayBDYW4gYmUgYW55IFByb21pc2VMaWtlPFQ+CiAgICogQHJldHVybnMgUmVtb3ZlZCBwcm9taXNlLgogICAqLwogIGZ1bmN0aW9uIHJlbW92ZSh0YXNrKSB7CiAgICByZXR1cm4gYnVmZmVyLnNwbGljZShidWZmZXIuaW5kZXhPZih0YXNrKSwgMSlbMF07CiAgfQoKICAvKioKICAgKiBBZGQgYSBwcm9taXNlIChyZXByZXNlbnRpbmcgYW4gaW4tZmxpZ2h0IGFjdGlvbikgdG8gdGhlIHF1ZXVlLCBhbmQgc2V0IGl0IHRvIHJlbW92ZSBpdHNlbGYgb24gZnVsZmlsbG1lbnQuCiAgICoKICAgKiBAcGFyYW0gdGFza1Byb2R1Y2VyIEEgZnVuY3Rpb24gcHJvZHVjaW5nIGFueSBQcm9taXNlTGlrZTxUPjsgSW4gcHJldmlvdXMgdmVyc2lvbnMgdGhpcyB1c2VkIHRvIGJlIGB0YXNrOgogICAqICAgICAgICBQcm9taXNlTGlrZTxUPmAsIGJ1dCB1bmRlciB0aGF0IG1vZGVsLCBQcm9taXNlcyB3ZXJlIGluc3RhbnRseSBjcmVhdGVkIG9uIHRoZSBjYWxsLXNpdGUgYW5kIHRoZWlyIGV4ZWN1dG9yCiAgICogICAgICAgIGZ1bmN0aW9ucyB0aGVyZWZvcmUgcmFuIGltbWVkaWF0ZWx5LiBUaHVzLCBldmVuIGlmIHRoZSBidWZmZXIgd2FzIGZ1bGwsIHRoZSBhY3Rpb24gc3RpbGwgaGFwcGVuZWQuIEJ5CiAgICogICAgICAgIHJlcXVpcmluZyB0aGUgcHJvbWlzZSB0byBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb24sIHdlIGNhbiBkZWZlciBwcm9taXNlIGNyZWF0aW9uIHVudGlsIGFmdGVyIHRoZSBidWZmZXIKICAgKiAgICAgICAgbGltaXQgY2hlY2suCiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIHByb21pc2UuCiAgICovCiAgZnVuY3Rpb24gYWRkKHRhc2tQcm9kdWNlcikgewogICAgaWYgKCFpc1JlYWR5KCkpIHsKICAgICAgcmV0dXJuIHJlamVjdGVkU3luY1Byb21pc2UobmV3IFNlbnRyeUVycm9yKCdOb3QgYWRkaW5nIFByb21pc2UgYmVjYXVzZSBidWZmZXIgbGltaXQgd2FzIHJlYWNoZWQuJykpOwogICAgfQoKICAgIC8vIHN0YXJ0IHRoZSB0YXNrIGFuZCBhZGQgaXRzIHByb21pc2UgdG8gdGhlIHF1ZXVlCiAgICBjb25zdCB0YXNrID0gdGFza1Byb2R1Y2VyKCk7CiAgICBpZiAoYnVmZmVyLmluZGV4T2YodGFzaykgPT09IC0xKSB7CiAgICAgIGJ1ZmZlci5wdXNoKHRhc2spOwogICAgfQogICAgdm9pZCB0YXNrCiAgICAgIC50aGVuKCgpID0+IHJlbW92ZSh0YXNrKSkKICAgICAgLy8gVXNlIGB0aGVuKG51bGwsIHJlamVjdGlvbkhhbmRsZXIpYCByYXRoZXIgdGhhbiBgY2F0Y2gocmVqZWN0aW9uSGFuZGxlcilgIHNvIHRoYXQgd2UgY2FuIHVzZSBgUHJvbWlzZUxpa2VgCiAgICAgIC8vIHJhdGhlciB0aGFuIGBQcm9taXNlYC4gYFByb21pc2VMaWtlYCBkb2Vzbid0IGhhdmUgYSBgLmNhdGNoYCBtZXRob2QsIG1ha2luZyBpdHMgcG9seWZpbGwgc21hbGxlci4gKEVTNSBkaWRuJ3QKICAgICAgLy8gaGF2ZSBwcm9taXNlcywgc28gVFMgaGFzIHRvIHBvbHlmaWxsIHdoZW4gZG93bi1jb21waWxpbmcuKQogICAgICAudGhlbihudWxsLCAoKSA9PgogICAgICAgIHJlbW92ZSh0YXNrKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYWRkIGFub3RoZXIgY2F0Y2ggaGVyZSBiZWNhdXNlIGByZW1vdmUoKWAgc3RhcnRzIGEgbmV3IHByb21pc2UgY2hhaW4uCiAgICAgICAgfSksCiAgICAgICk7CiAgICByZXR1cm4gdGFzazsKICB9CgogIC8qKgogICAqIFdhaXQgZm9yIGFsbCBwcm9taXNlcyBpbiB0aGUgcXVldWUgdG8gcmVzb2x2ZSBvciBmb3IgdGltZW91dCB0byBleHBpcmUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4KICAgKgogICAqIEBwYXJhbSB0aW1lb3V0IFRoZSB0aW1lLCBpbiBtcywgYWZ0ZXIgd2hpY2ggdG8gcmVzb2x2ZSB0byBgZmFsc2VgIGlmIHRoZSBxdWV1ZSBpcyBzdGlsbCBub24tZW1wdHkuIFBhc3NpbmcgYDBgIChvcgogICAqIG5vdCBwYXNzaW5nIGFueXRoaW5nKSB3aWxsIG1ha2UgdGhlIHByb21pc2Ugd2FpdCBhcyBsb25nIGFzIGl0IHRha2VzIGZvciB0aGUgcXVldWUgdG8gZHJhaW4gYmVmb3JlIHJlc29sdmluZyB0bwogICAqIGB0cnVlYC4KICAgKiBAcmV0dXJucyBBIHByb21pc2Ugd2hpY2ggd2lsbCByZXNvbHZlIHRvIGB0cnVlYCBpZiB0aGUgcXVldWUgaXMgYWxyZWFkeSBlbXB0eSBvciBkcmFpbnMgYmVmb3JlIHRoZSB0aW1lb3V0LCBhbmQKICAgKiBgZmFsc2VgIG90aGVyd2lzZQogICAqLwogIGZ1bmN0aW9uIGRyYWluKHRpbWVvdXQpIHsKICAgIHJldHVybiBuZXcgU3luY1Byb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgY291bnRlciA9IGJ1ZmZlci5sZW5ndGg7CgogICAgICBpZiAoIWNvdW50ZXIpIHsKICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTsKICAgICAgfQoKICAgICAgLy8gd2FpdCBmb3IgYHRpbWVvdXRgIG1zIGFuZCB0aGVuIHJlc29sdmUgdG8gYGZhbHNlYCAoaWYgbm90IGNhbmNlbGxlZCBmaXJzdCkKICAgICAgY29uc3QgY2FwdHVyZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgaWYgKHRpbWVvdXQgJiYgdGltZW91dCA+IDApIHsKICAgICAgICAgIHJlc29sdmUoZmFsc2UpOwogICAgICAgIH0KICAgICAgfSwgdGltZW91dCk7CgogICAgICAvLyBpZiBhbGwgcHJvbWlzZXMgcmVzb2x2ZSBpbiB0aW1lLCBjYW5jZWwgdGhlIHRpbWVyIGFuZCByZXNvbHZlIHRvIGB0cnVlYAogICAgICBidWZmZXIuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICB2b2lkIHJlc29sdmVkU3luY1Byb21pc2UoaXRlbSkudGhlbigoKSA9PiB7CiAgICAgICAgICBpZiAoIS0tY291bnRlcikgewogICAgICAgICAgICBjbGVhclRpbWVvdXQoY2FwdHVyZWRTZXRUaW1lb3V0KTsKICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTsKICAgICAgICAgIH0KICAgICAgICB9LCByZWplY3QpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgcmV0dXJuIHsKICAgICQ6IGJ1ZmZlciwKICAgIGFkZCwKICAgIGRyYWluLAogIH07Cn0KCmNvbnN0IE9ORV9TRUNPTkRfSU5fTVMgPSAxMDAwOwoKLyoqCiAqIEEgcGFydGlhbCBkZWZpbml0aW9uIG9mIHRoZSBbUGVyZm9ybWFuY2UgV2ViIEFQSV17QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1BlcmZvcm1hbmNlfQogKiBmb3IgYWNjZXNzaW5nIGEgaGlnaC1yZXNvbHV0aW9uIG1vbm90b25pYyBjbG9jay4KICovCgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIHRoZSBEYXRlIEFQSS4KICoKICogVE9ETyh2OCk6IFJldHVybiB0eXBlIHNob3VsZCBiZSByb3VuZGVkLgogKi8KZnVuY3Rpb24gZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpIHsKICByZXR1cm4gRGF0ZS5ub3coKSAvIE9ORV9TRUNPTkRfSU5fTVM7Cn0KCi8qKgogKiBSZXR1cm5zIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBQZXJmb3JtYW5jZSBBUEkgYnJvd3NlciBpbXBsZW1lbnRhdGlvbiwgb3IgdW5kZWZpbmVkIGZvciBicm93c2VycyB0aGF0IGRvIG5vdAogKiBzdXBwb3J0IHRoZSBBUEkuCiAqCiAqIFdyYXBwaW5nIHRoZSBuYXRpdmUgQVBJIHdvcmtzIGFyb3VuZCBkaWZmZXJlbmNlcyBpbiBiZWhhdmlvciBmcm9tIGRpZmZlcmVudCBicm93c2Vycy4KICovCmZ1bmN0aW9uIGNyZWF0ZVVuaXhUaW1lc3RhbXBJblNlY29uZHNGdW5jKCkgewogIGNvbnN0IHsgcGVyZm9ybWFuY2UgfSA9IEdMT0JBTF9PQkogOwogIGlmICghcGVyZm9ybWFuY2UgfHwgIXBlcmZvcm1hbmNlLm5vdykgewogICAgcmV0dXJuIGRhdGVUaW1lc3RhbXBJblNlY29uZHM7CiAgfQoKICAvLyBTb21lIGJyb3dzZXIgYW5kIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGEgdGltZU9yaWdpbiwgc28gd2UgZmFsbGJhY2sgdG8KICAvLyB1c2luZyBEYXRlLm5vdygpIHRvIGNvbXB1dGUgdGhlIHN0YXJ0aW5nIHRpbWUuCiAgY29uc3QgYXBwcm94U3RhcnRpbmdUaW1lT3JpZ2luID0gRGF0ZS5ub3coKSAtIHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IHRpbWVPcmlnaW4gPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luID09IHVuZGVmaW5lZCA/IGFwcHJveFN0YXJ0aW5nVGltZU9yaWdpbiA6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CgogIC8vIHBlcmZvcm1hbmNlLm5vdygpIGlzIGEgbW9ub3RvbmljIGNsb2NrLCB3aGljaCBtZWFucyBpdCBzdGFydHMgYXQgMCB3aGVuIHRoZSBwcm9jZXNzIGJlZ2lucy4gVG8gZ2V0IHRoZSBjdXJyZW50CiAgLy8gd2FsbCBjbG9jayB0aW1lIChhY3R1YWwgVU5JWCB0aW1lc3RhbXApLCB3ZSBuZWVkIHRvIGFkZCB0aGUgc3RhcnRpbmcgdGltZSBvcmlnaW4gYW5kIHRoZSBjdXJyZW50IHRpbWUgZWxhcHNlZC4KICAvLwogIC8vIFRPRE86IFRoaXMgZG9lcyBub3QgYWNjb3VudCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG1vbm90b25pYyBjbG9jayB0aGF0IHBvd2VycyBwZXJmb3JtYW5jZS5ub3coKSBkcmlmdHMgZnJvbSB0aGUKICAvLyB3YWxsIGNsb2NrIHRpbWUsIHdoaWNoIGNhdXNlcyB0aGUgcmV0dXJuZWQgdGltZXN0YW1wIHRvIGJlIGluYWNjdXJhdGUuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBob3cgdG8gZGV0ZWN0IGFuZAogIC8vIGNvcnJlY3QgZm9yIHRoaXMuCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwCiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vbWRuL2NvbnRlbnQvaXNzdWVzLzQ3MTMKICAvLyBTZWU6IGh0dHBzOi8vZGV2LnRvL25vYW1yL3doZW4tYS1taWxsaXNlY29uZC1pcy1ub3QtYS1taWxsaXNlY29uZC0zaDYKICByZXR1cm4gKCkgPT4gewogICAgcmV0dXJuICh0aW1lT3JpZ2luICsgcGVyZm9ybWFuY2Uubm93KCkpIC8gT05FX1NFQ09ORF9JTl9NUzsKICB9Owp9CgovKioKICogUmV0dXJucyBhIHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoIHVzaW5nIGVpdGhlciB0aGUgUGVyZm9ybWFuY2Ugb3IgRGF0ZSBBUElzLCBkZXBlbmRpbmcgb24gdGhlCiAqIGF2YWlsYWJpbGl0eSBvZiB0aGUgUGVyZm9ybWFuY2UgQVBJLgogKgogKiBCVUc6IE5vdGUgdGhhdCBiZWNhdXNlIG9mIGhvdyBicm93c2VycyBpbXBsZW1lbnQgdGhlIFBlcmZvcm1hbmNlIEFQSSwgdGhlIGNsb2NrIG1pZ2h0IHN0b3Agd2hlbiB0aGUgY29tcHV0ZXIgaXMKICogYXNsZWVwLiBUaGlzIGNyZWF0ZXMgYSBza2V3IGJldHdlZW4gYGRhdGVUaW1lc3RhbXBJblNlY29uZHNgIGFuZCBgdGltZXN0YW1wSW5TZWNvbmRzYC4gVGhlCiAqIHNrZXcgY2FuIGdyb3cgdG8gYXJiaXRyYXJ5IGFtb3VudHMgbGlrZSBkYXlzLCB3ZWVrcyBvciBtb250aHMuCiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1qYXZhc2NyaXB0L2lzc3Vlcy8yNTkwLgogKi8KY29uc3QgdGltZXN0YW1wSW5TZWNvbmRzID0gY3JlYXRlVW5peFRpbWVzdGFtcEluU2Vjb25kc0Z1bmMoKTsKCi8qKgogKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSB0aGUgVU5JWCBlcG9jaC4gVGhpcyB2YWx1ZSBpcyBvbmx5IHVzYWJsZSBpbiBhIGJyb3dzZXIsIGFuZCBvbmx5IHdoZW4gdGhlCiAqIHBlcmZvcm1hbmNlIEFQSSBpcyBhdmFpbGFibGUuCiAqLwooKCkgPT4gewogIC8vIFVuZm9ydHVuYXRlbHkgYnJvd3NlcnMgbWF5IHJlcG9ydCBhbiBpbmFjY3VyYXRlIHRpbWUgb3JpZ2luIGRhdGEsIHRocm91Z2ggZWl0aGVyIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gb3IKICAvLyBwZXJmb3JtYW5jZS50aW1pbmcubmF2aWdhdGlvblN0YXJ0LCB3aGljaCByZXN1bHRzIGluIHBvb3IgcmVzdWx0cyBpbiBwZXJmb3JtYW5jZSBkYXRhLiBXZSBvbmx5IHRyZWF0IHRpbWUgb3JpZ2luCiAgLy8gZGF0YSBhcyByZWxpYWJsZSBpZiB0aGV5IGFyZSB3aXRoaW4gYSByZWFzb25hYmxlIHRocmVzaG9sZCBvZiB0aGUgY3VycmVudCB0aW1lLgoKICBjb25zdCB7IHBlcmZvcm1hbmNlIH0gPSBHTE9CQUxfT0JKIDsKICBpZiAoIXBlcmZvcm1hbmNlIHx8ICFwZXJmb3JtYW5jZS5ub3cpIHsKICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQoKICBjb25zdCB0aHJlc2hvbGQgPSAzNjAwICogMTAwMDsKICBjb25zdCBwZXJmb3JtYW5jZU5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwogIGNvbnN0IGRhdGVOb3cgPSBEYXRlLm5vdygpOwoKICAvLyBpZiB0aW1lT3JpZ2luIGlzbid0IGF2YWlsYWJsZSBzZXQgZGVsdGEgdG8gdGhyZXNob2xkIHNvIGl0IGlzbid0IHVzZWQKICBjb25zdCB0aW1lT3JpZ2luRGVsdGEgPSBwZXJmb3JtYW5jZS50aW1lT3JpZ2luCiAgICA/IE1hdGguYWJzKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBwZXJmb3JtYW5jZU5vdyAtIGRhdGVOb3cpCiAgICA6IHRocmVzaG9sZDsKICBjb25zdCB0aW1lT3JpZ2luSXNSZWxpYWJsZSA9IHRpbWVPcmlnaW5EZWx0YSA8IHRocmVzaG9sZDsKCiAgLy8gV2hpbGUgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4sIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4KICAvLyBpcyBub3QgYXMgd2lkZWx5IHN1cHBvcnRlZC4gTmFtZWx5LCBwZXJmb3JtYW5jZS50aW1lT3JpZ2luIGlzIHVuZGVmaW5lZCBpbiBTYWZhcmkgYXMgb2Ygd3JpdGluZy4KICAvLyBBbHNvIGFzIG9mIHdyaXRpbmcsIHBlcmZvcm1hbmNlLnRpbWluZyBpcyBub3QgYXZhaWxhYmxlIGluIFdlYiBXb3JrZXJzIGluIG1haW5zdHJlYW0gYnJvd3NlcnMsIHNvIGl0IGlzIG5vdCBhbHdheXMKICAvLyBhIHZhbGlkIGZhbGxiYWNrLiBJbiB0aGUgYWJzZW5jZSBvZiBhbiBpbml0aWFsIHRpbWUgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIsIGZhbGxiYWNrIHRvIHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUKICAvLyBEYXRlIEFQSS4KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICBjb25zdCBuYXZpZ2F0aW9uU3RhcnQgPSBwZXJmb3JtYW5jZS50aW1pbmcgJiYgcGVyZm9ybWFuY2UudGltaW5nLm5hdmlnYXRpb25TdGFydDsKICBjb25zdCBoYXNOYXZpZ2F0aW9uU3RhcnQgPSB0eXBlb2YgbmF2aWdhdGlvblN0YXJ0ID09PSAnbnVtYmVyJzsKICAvLyBpZiBuYXZpZ2F0aW9uU3RhcnQgaXNuJ3QgYXZhaWxhYmxlIHNldCBkZWx0YSB0byB0aHJlc2hvbGQgc28gaXQgaXNuJ3QgdXNlZAogIGNvbnN0IG5hdmlnYXRpb25TdGFydERlbHRhID0gaGFzTmF2aWdhdGlvblN0YXJ0ID8gTWF0aC5hYnMobmF2aWdhdGlvblN0YXJ0ICsgcGVyZm9ybWFuY2VOb3cgLSBkYXRlTm93KSA6IHRocmVzaG9sZDsKICBjb25zdCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlID0gbmF2aWdhdGlvblN0YXJ0RGVsdGEgPCB0aHJlc2hvbGQ7CgogIGlmICh0aW1lT3JpZ2luSXNSZWxpYWJsZSB8fCBuYXZpZ2F0aW9uU3RhcnRJc1JlbGlhYmxlKSB7CiAgICAvLyBVc2UgdGhlIG1vcmUgcmVsaWFibGUgdGltZSBvcmlnaW4KICAgIGlmICh0aW1lT3JpZ2luRGVsdGEgPD0gbmF2aWdhdGlvblN0YXJ0RGVsdGEpIHsKICAgICAgcmV0dXJuIHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmF2aWdhdGlvblN0YXJ0OwogICAgfQogIH0KICByZXR1cm4gZGF0ZU5vdzsKfSkoKTsKCi8qKgogKiBDcmVhdGVzIGFuIGVudmVsb3BlLgogKiBNYWtlIHN1cmUgdG8gYWx3YXlzIGV4cGxpY2l0bHkgcHJvdmlkZSB0aGUgZ2VuZXJpYyB0byB0aGlzIGZ1bmN0aW9uCiAqIHNvIHRoYXQgdGhlIGVudmVsb3BlIHR5cGVzIHJlc29sdmUgY29ycmVjdGx5LgogKi8KZnVuY3Rpb24gY3JlYXRlRW52ZWxvcGUoaGVhZGVycywgaXRlbXMgPSBbXSkgewogIHJldHVybiBbaGVhZGVycywgaXRlbXNdIDsKfQoKLyoqCiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgaXRlbXMgYW5kIGl0ZW0gdHlwZXMgb2YgYW4gZW52ZWxvcGUuCiAqIChUaGlzIGZ1bmN0aW9uIHdhcyBtb3N0bHkgY3JlYXRlZCBiZWNhdXNlIHdvcmtpbmcgd2l0aCBlbnZlbG9wZSB0eXBlcyBpcyBwYWluZnVsIGF0IHRoZSBtb21lbnQpCiAqCiAqIElmIHRoZSBjYWxsYmFjayByZXR1cm5zIHRydWUsIHRoZSByZXN0IG9mIHRoZSBpdGVtcyB3aWxsIGJlIHNraXBwZWQuCiAqLwpmdW5jdGlvbiBmb3JFYWNoRW52ZWxvcGVJdGVtKAogIGVudmVsb3BlLAogIGNhbGxiYWNrLAopIHsKICBjb25zdCBlbnZlbG9wZUl0ZW1zID0gZW52ZWxvcGVbMV07CgogIGZvciAoY29uc3QgZW52ZWxvcGVJdGVtIG9mIGVudmVsb3BlSXRlbXMpIHsKICAgIGNvbnN0IGVudmVsb3BlSXRlbVR5cGUgPSBlbnZlbG9wZUl0ZW1bMF0udHlwZTsKICAgIGNvbnN0IHJlc3VsdCA9IGNhbGxiYWNrKGVudmVsb3BlSXRlbSwgZW52ZWxvcGVJdGVtVHlwZSk7CgogICAgaWYgKHJlc3VsdCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIHJldHVybiBmYWxzZTsKfQoKLyoqCiAqIEVuY29kZSBhIHN0cmluZyB0byBVVEY4LgogKi8KZnVuY3Rpb24gZW5jb2RlVVRGOChpbnB1dCwgdGV4dEVuY29kZXIpIHsKICBjb25zdCB1dGY4ID0gdGV4dEVuY29kZXIgfHwgbmV3IFRleHRFbmNvZGVyKCk7CiAgcmV0dXJuIHV0ZjguZW5jb2RlKGlucHV0KTsKfQoKLyoqCiAqIFNlcmlhbGl6ZXMgYW4gZW52ZWxvcGUuCiAqLwpmdW5jdGlvbiBzZXJpYWxpemVFbnZlbG9wZShlbnZlbG9wZSwgdGV4dEVuY29kZXIpIHsKICBjb25zdCBbZW52SGVhZGVycywgaXRlbXNdID0gZW52ZWxvcGU7CgogIC8vIEluaXRpYWxseSB3ZSBjb25zdHJ1Y3Qgb3VyIGVudmVsb3BlIGFzIGEgc3RyaW5nIGFuZCBvbmx5IGNvbnZlcnQgdG8gYmluYXJ5IGNodW5rcyBpZiB3ZSBlbmNvdW50ZXIgYmluYXJ5IGRhdGEKICBsZXQgcGFydHMgPSBKU09OLnN0cmluZ2lmeShlbnZIZWFkZXJzKTsKCiAgZnVuY3Rpb24gYXBwZW5kKG5leHQpIHsKICAgIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7CiAgICAgIHBhcnRzID0gdHlwZW9mIG5leHQgPT09ICdzdHJpbmcnID8gcGFydHMgKyBuZXh0IDogW2VuY29kZVVURjgocGFydHMsIHRleHRFbmNvZGVyKSwgbmV4dF07CiAgICB9IGVsc2UgewogICAgICBwYXJ0cy5wdXNoKHR5cGVvZiBuZXh0ID09PSAnc3RyaW5nJyA/IGVuY29kZVVURjgobmV4dCwgdGV4dEVuY29kZXIpIDogbmV4dCk7CiAgICB9CiAgfQoKICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHsKICAgIGNvbnN0IFtpdGVtSGVhZGVycywgcGF5bG9hZF0gPSBpdGVtOwoKICAgIGFwcGVuZChgXG4ke0pTT04uc3RyaW5naWZ5KGl0ZW1IZWFkZXJzKX1cbmApOwoKICAgIGlmICh0eXBlb2YgcGF5bG9hZCA9PT0gJ3N0cmluZycgfHwgcGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsKICAgICAgYXBwZW5kKHBheWxvYWQpOwogICAgfSBlbHNlIHsKICAgICAgbGV0IHN0cmluZ2lmaWVkUGF5bG9hZDsKICAgICAgdHJ5IHsKICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkKTsKICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgIC8vIEluIGNhc2UsIGRlc3BpdGUgYWxsIG91ciBlZmZvcnRzIHRvIGtlZXAgYHBheWxvYWRgIGNpcmN1bGFyLWRlcGVuZGVuY3ktZnJlZSwgYEpTT04uc3RyaW5pZnkoKWAgc3RpbGwKICAgICAgICAvLyBmYWlscywgd2UgdHJ5IGFnYWluIGFmdGVyIG5vcm1hbGl6aW5nIGl0IGFnYWluIHdpdGggaW5maW5pdGUgbm9ybWFsaXphdGlvbiBkZXB0aC4gVGhpcyBvZiBjb3Vyc2UgaGFzIGEKICAgICAgICAvLyBwZXJmb3JtYW5jZSBpbXBhY3QgYnV0IGluIHRoaXMgY2FzZSBhIHBlcmZvcm1hbmNlIGhpdCBpcyBiZXR0ZXIgdGhhbiB0aHJvd2luZy4KICAgICAgICBzdHJpbmdpZmllZFBheWxvYWQgPSBKU09OLnN0cmluZ2lmeShub3JtYWxpemUocGF5bG9hZCkpOwogICAgICB9CiAgICAgIGFwcGVuZChzdHJpbmdpZmllZFBheWxvYWQpOwogICAgfQogIH0KCiAgcmV0dXJuIHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycgPyBwYXJ0cyA6IGNvbmNhdEJ1ZmZlcnMocGFydHMpOwp9CgpmdW5jdGlvbiBjb25jYXRCdWZmZXJzKGJ1ZmZlcnMpIHsKICBjb25zdCB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChhY2MsIGJ1ZikgPT4gYWNjICsgYnVmLmxlbmd0aCwgMCk7CgogIGNvbnN0IG1lcmdlZCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKTsKICBsZXQgb2Zmc2V0ID0gMDsKICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7CiAgICBtZXJnZWQuc2V0KGJ1ZmZlciwgb2Zmc2V0KTsKICAgIG9mZnNldCArPSBidWZmZXIubGVuZ3RoOwogIH0KCiAgcmV0dXJuIG1lcmdlZDsKfQoKY29uc3QgSVRFTV9UWVBFX1RPX0RBVEFfQ0FURUdPUllfTUFQID0gewogIHNlc3Npb246ICdzZXNzaW9uJywKICBzZXNzaW9uczogJ3Nlc3Npb24nLAogIGF0dGFjaG1lbnQ6ICdhdHRhY2htZW50JywKICB0cmFuc2FjdGlvbjogJ3RyYW5zYWN0aW9uJywKICBldmVudDogJ2Vycm9yJywKICBjbGllbnRfcmVwb3J0OiAnaW50ZXJuYWwnLAogIHVzZXJfcmVwb3J0OiAnZGVmYXVsdCcsCiAgcHJvZmlsZTogJ3Byb2ZpbGUnLAogIHJlcGxheV9ldmVudDogJ3JlcGxheScsCiAgcmVwbGF5X3JlY29yZGluZzogJ3JlcGxheScsCiAgY2hlY2tfaW46ICdtb25pdG9yJywKICBmZWVkYmFjazogJ2ZlZWRiYWNrJywKICBzcGFuOiAnc3BhbicsCiAgc3RhdHNkOiAnbWV0cmljX2J1Y2tldCcsCn07CgovKioKICogTWFwcyB0aGUgdHlwZSBvZiBhbiBlbnZlbG9wZSBpdGVtIHRvIGEgZGF0YSBjYXRlZ29yeS4KICovCmZ1bmN0aW9uIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSB7CiAgcmV0dXJuIElURU1fVFlQRV9UT19EQVRBX0NBVEVHT1JZX01BUFt0eXBlXTsKfQoKLyoqIEV4dHJhY3RzIHRoZSBtaW5pbWFsIFNESyBpbmZvIGZyb20gdGhlIG1ldGFkYXRhIG9yIGFuIGV2ZW50cyAqLwpmdW5jdGlvbiBnZXRTZGtNZXRhZGF0YUZvckVudmVsb3BlSGVhZGVyKG1ldGFkYXRhT3JFdmVudCkgewogIGlmICghbWV0YWRhdGFPckV2ZW50IHx8ICFtZXRhZGF0YU9yRXZlbnQuc2RrKSB7CiAgICByZXR1cm47CiAgfQogIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gbWV0YWRhdGFPckV2ZW50LnNkazsKICByZXR1cm4geyBuYW1lLCB2ZXJzaW9uIH07Cn0KCi8qKgogKiBDcmVhdGVzIGV2ZW50IGVudmVsb3BlIGhlYWRlcnMsIGJhc2VkIG9uIGV2ZW50LCBzZGsgaW5mbyBhbmQgdHVubmVsCiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIHBhY2thZ2UgdG8gbWFrZSBpdCBhdmFpbGFibGUgaW4gUmVwbGF5CiAqLwpmdW5jdGlvbiBjcmVhdGVFdmVudEVudmVsb3BlSGVhZGVycygKICBldmVudCwKICBzZGtJbmZvLAogIHR1bm5lbCwKICBkc24sCikgewogIGNvbnN0IGR5bmFtaWNTYW1wbGluZ0NvbnRleHQgPSBldmVudC5zZGtQcm9jZXNzaW5nTWV0YWRhdGEgJiYgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQ7CiAgcmV0dXJuIHsKICAgIGV2ZW50X2lkOiBldmVudC5ldmVudF9pZCAsCiAgICBzZW50X2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAuLi4oc2RrSW5mbyAmJiB7IHNkazogc2RrSW5mbyB9KSwKICAgIC4uLighIXR1bm5lbCAmJiBkc24gJiYgeyBkc246IGRzblRvU3RyaW5nKGRzbikgfSksCiAgICAuLi4oZHluYW1pY1NhbXBsaW5nQ29udGV4dCAmJiB7CiAgICAgIHRyYWNlOiBkcm9wVW5kZWZpbmVkS2V5cyh7IC4uLmR5bmFtaWNTYW1wbGluZ0NvbnRleHQgfSksCiAgICB9KSwKICB9Owp9CgovLyBJbnRlbnRpb25hbGx5IGtlZXBpbmcgdGhlIGtleSBicm9hZCwgYXMgd2UgZG9uJ3Qga25vdyBmb3Igc3VyZSB3aGF0IHJhdGUgbGltaXQgaGVhZGVycyBnZXQgcmV0dXJuZWQgZnJvbSBiYWNrZW5kCgpjb25zdCBERUZBVUxUX1JFVFJZX0FGVEVSID0gNjAgKiAxMDAwOyAvLyA2MCBzZWNvbmRzCgovKioKICogRXh0cmFjdHMgUmV0cnktQWZ0ZXIgdmFsdWUgZnJvbSB0aGUgcmVxdWVzdCBoZWFkZXIgb3IgcmV0dXJucyBkZWZhdWx0IHZhbHVlCiAqIEBwYXJhbSBoZWFkZXIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICdSZXRyeS1BZnRlcicgaGVhZGVyCiAqIEBwYXJhbSBub3cgY3VycmVudCB1bml4IHRpbWVzdGFtcAogKgogKi8KZnVuY3Rpb24gcGFyc2VSZXRyeUFmdGVySGVhZGVyKGhlYWRlciwgbm93ID0gRGF0ZS5ub3coKSkgewogIGNvbnN0IGhlYWRlckRlbGF5ID0gcGFyc2VJbnQoYCR7aGVhZGVyfWAsIDEwKTsKICBpZiAoIWlzTmFOKGhlYWRlckRlbGF5KSkgewogICAgcmV0dXJuIGhlYWRlckRlbGF5ICogMTAwMDsKICB9CgogIGNvbnN0IGhlYWRlckRhdGUgPSBEYXRlLnBhcnNlKGAke2hlYWRlcn1gKTsKICBpZiAoIWlzTmFOKGhlYWRlckRhdGUpKSB7CiAgICByZXR1cm4gaGVhZGVyRGF0ZSAtIG5vdzsKICB9CgogIHJldHVybiBERUZBVUxUX1JFVFJZX0FGVEVSOwp9CgovKioKICogR2V0cyB0aGUgdGltZSB0aGF0IHRoZSBnaXZlbiBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBmb3IgcmF0ZSBsaW1pdGluZy4KICogSW4gY2FzZSBubyBjYXRlZ29yeS1zcGVjaWZpYyBsaW1pdCBpcyBzZXQgYnV0IGEgZ2VuZXJhbCByYXRlIGxpbWl0IGFjcm9zcyBhbGwgY2F0ZWdvcmllcyBpcyBhY3RpdmUsCiAqIHRoYXQgdGltZSBpcyByZXR1cm5lZC4KICoKICogQHJldHVybiB0aGUgdGltZSBpbiBtcyB0aGF0IHRoZSBjYXRlZ29yeSBpcyBkaXNhYmxlZCB1bnRpbCBvciAwIGlmIHRoZXJlJ3Mgbm8gYWN0aXZlIHJhdGUgbGltaXQuCiAqLwpmdW5jdGlvbiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSB7CiAgcmV0dXJuIGxpbWl0c1tkYXRhQ2F0ZWdvcnldIHx8IGxpbWl0cy5hbGwgfHwgMDsKfQoKLyoqCiAqIENoZWNrcyBpZiBhIGNhdGVnb3J5IGlzIHJhdGUgbGltaXRlZAogKi8KZnVuY3Rpb24gaXNSYXRlTGltaXRlZChsaW1pdHMsIGRhdGFDYXRlZ29yeSwgbm93ID0gRGF0ZS5ub3coKSkgewogIHJldHVybiBkaXNhYmxlZFVudGlsKGxpbWl0cywgZGF0YUNhdGVnb3J5KSA+IG5vdzsKfQoKLyoqCiAqIFVwZGF0ZSByYXRlbGltaXRzIGZyb20gaW5jb21pbmcgaGVhZGVycy4KICoKICogQHJldHVybiB0aGUgdXBkYXRlZCBSYXRlTGltaXRzIG9iamVjdC4KICovCmZ1bmN0aW9uIHVwZGF0ZVJhdGVMaW1pdHMoCiAgbGltaXRzLAogIHsgc3RhdHVzQ29kZSwgaGVhZGVycyB9LAogIG5vdyA9IERhdGUubm93KCksCikgewogIGNvbnN0IHVwZGF0ZWRSYXRlTGltaXRzID0gewogICAgLi4ubGltaXRzLAogIH07CgogIC8vICJUaGUgbmFtZSBpcyBjYXNlLWluc2Vuc2l0aXZlLiIKICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSGVhZGVycy9nZXQKICBjb25zdCByYXRlTGltaXRIZWFkZXIgPSBoZWFkZXJzICYmIGhlYWRlcnNbJ3gtc2VudHJ5LXJhdGUtbGltaXRzJ107CiAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IGhlYWRlcnMgJiYgaGVhZGVyc1sncmV0cnktYWZ0ZXInXTsKCiAgaWYgKHJhdGVMaW1pdEhlYWRlcikgewogICAgLyoqCiAgICAgKiByYXRlIGxpbWl0IGhlYWRlcnMgYXJlIG9mIHRoZSBmb3JtCiAgICAgKiAgICAgPGhlYWRlcj4sPGhlYWRlcj4sLi4KICAgICAqIHdoZXJlIGVhY2ggPGhlYWRlcj4gaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+OiA8Y2F0ZWdvcmllcz46IDxzY29wZT46IDxyZWFzb25fY29kZT46IDxuYW1lc3BhY2VzPgogICAgICogd2hlcmUKICAgICAqICAgICA8cmV0cnlfYWZ0ZXI+IGlzIGEgZGVsYXkgaW4gc2Vjb25kcwogICAgICogICAgIDxjYXRlZ29yaWVzPiBpcyB0aGUgZXZlbnQgdHlwZShzKSAoZXJyb3IsIHRyYW5zYWN0aW9uLCBldGMpIGJlaW5nIHJhdGUgbGltaXRlZCBhbmQgaXMgb2YgdGhlIGZvcm0KICAgICAqICAgICAgICAgPGNhdGVnb3J5Pjs8Y2F0ZWdvcnk+Oy4uLgogICAgICogICAgIDxzY29wZT4gaXMgd2hhdCdzIGJlaW5nIGxpbWl0ZWQgKG9yZywgcHJvamVjdCwgb3Iga2V5KSAtIGlnbm9yZWQgYnkgU0RLCiAgICAgKiAgICAgPHJlYXNvbl9jb2RlPiBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nIGxpa2UgIm9yZ19xdW90YSIgLSBpZ25vcmVkIGJ5IFNESwogICAgICogICAgIDxuYW1lc3BhY2VzPiBTZW1pY29sb24tc2VwYXJhdGVkIGxpc3Qgb2YgbWV0cmljIG5hbWVzcGFjZSBpZGVudGlmaWVycy4gRGVmaW5lcyB3aGljaCBuYW1lc3BhY2Uocykgd2lsbCBiZSBhZmZlY3RlZC4KICAgICAqICAgICAgICAgT25seSBwcmVzZW50IGlmIHJhdGUgbGltaXQgYXBwbGllcyB0byB0aGUgbWV0cmljX2J1Y2tldCBkYXRhIGNhdGVnb3J5LgogICAgICovCiAgICBmb3IgKGNvbnN0IGxpbWl0IG9mIHJhdGVMaW1pdEhlYWRlci50cmltKCkuc3BsaXQoJywnKSkgewogICAgICBjb25zdCBbcmV0cnlBZnRlciwgY2F0ZWdvcmllcywgLCAsIG5hbWVzcGFjZXNdID0gbGltaXQuc3BsaXQoJzonLCA1KTsKICAgICAgY29uc3QgaGVhZGVyRGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyLCAxMCk7CiAgICAgIGNvbnN0IGRlbGF5ID0gKCFpc05hTihoZWFkZXJEZWxheSkgPyBoZWFkZXJEZWxheSA6IDYwKSAqIDEwMDA7IC8vIDYwc2VjIGRlZmF1bHQKICAgICAgaWYgKCFjYXRlZ29yaWVzKSB7CiAgICAgICAgdXBkYXRlZFJhdGVMaW1pdHMuYWxsID0gbm93ICsgZGVsYXk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzLnNwbGl0KCc7JykpIHsKICAgICAgICAgIGlmIChjYXRlZ29yeSA9PT0gJ21ldHJpY19idWNrZXQnKSB7CiAgICAgICAgICAgIC8vIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50IHdoZW4gY2F0ZWdvcnkgPT09ICdtZXRyaWNfYnVja2V0JwogICAgICAgICAgICBpZiAoIW5hbWVzcGFjZXMgfHwgbmFtZXNwYWNlcy5zcGxpdCgnOycpLmluY2x1ZGVzKCdjdXN0b20nKSkgewogICAgICAgICAgICAgIHVwZGF0ZWRSYXRlTGltaXRzW2NhdGVnb3J5XSA9IG5vdyArIGRlbGF5OwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1cGRhdGVkUmF0ZUxpbWl0c1tjYXRlZ29yeV0gPSBub3cgKyBkZWxheTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IGVsc2UgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHsKICAgIHVwZGF0ZWRSYXRlTGltaXRzLmFsbCA9IG5vdyArIHBhcnNlUmV0cnlBZnRlckhlYWRlcihyZXRyeUFmdGVySGVhZGVyLCBub3cpOwogIH0gZWxzZSBpZiAoc3RhdHVzQ29kZSA9PT0gNDI5KSB7CiAgICB1cGRhdGVkUmF0ZUxpbWl0cy5hbGwgPSBub3cgKyA2MCAqIDEwMDA7CiAgfQoKICByZXR1cm4gdXBkYXRlZFJhdGVMaW1pdHM7Cn0KCi8qKgogKiBBIG5vZGUuanMgd2F0Y2hkb2cgdGltZXIKICogQHBhcmFtIHBvbGxJbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdGhhdCB3ZSBleHBlY3QgdG8gZ2V0IHBvbGxlZCBhdAogKiBAcGFyYW0gYW5yVGhyZXNob2xkIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gd2UgY29uc2lkZXIgQU5SCiAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gY2FsbCBmb3IgQU5SCiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBwb2xsYCBhbmQgYGVuYWJsZWRgIGZ1bmN0aW9ucyB7QGxpbmsgV2F0Y2hkb2dSZXR1cm59CiAqLwpmdW5jdGlvbiB3YXRjaGRvZ1RpbWVyKAogIGNyZWF0ZVRpbWVyLAogIHBvbGxJbnRlcnZhbCwKICBhbnJUaHJlc2hvbGQsCiAgY2FsbGJhY2ssCikgewogIGNvbnN0IHRpbWVyID0gY3JlYXRlVGltZXIoKTsKICBsZXQgdHJpZ2dlcmVkID0gZmFsc2U7CiAgbGV0IGVuYWJsZWQgPSB0cnVlOwoKICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICBjb25zdCBkaWZmTXMgPSB0aW1lci5nZXRUaW1lTXMoKTsKCiAgICBpZiAodHJpZ2dlcmVkID09PSBmYWxzZSAmJiBkaWZmTXMgPiBwb2xsSW50ZXJ2YWwgKyBhbnJUaHJlc2hvbGQpIHsKICAgICAgdHJpZ2dlcmVkID0gdHJ1ZTsKICAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CgogICAgaWYgKGRpZmZNcyA8IHBvbGxJbnRlcnZhbCArIGFuclRocmVzaG9sZCkgewogICAgICB0cmlnZ2VyZWQgPSBmYWxzZTsKICAgIH0KICB9LCAyMCk7CgogIHJldHVybiB7CiAgICBwb2xsOiAoKSA9PiB7CiAgICAgIHRpbWVyLnJlc2V0KCk7CiAgICB9LAogICAgZW5hYmxlZDogKHN0YXRlKSA9PiB7CiAgICAgIGVuYWJsZWQgPSBzdGF0ZTsKICAgIH0sCiAgfTsKfQoKLy8gdHlwZXMgY29waWVkIGZyb20gaW5zcGVjdG9yLmQudHMKCi8qKgogKiBDb252ZXJ0cyBEZWJ1Z2dlci5DYWxsRnJhbWUgdG8gU2VudHJ5IFN0YWNrRnJhbWUKICovCmZ1bmN0aW9uIGNhbGxGcmFtZVRvU3RhY2tGcmFtZSgKICBmcmFtZSwKICB1cmwsCiAgZ2V0TW9kdWxlRnJvbUZpbGVuYW1lLAopIHsKICBjb25zdCBmaWxlbmFtZSA9IHVybCA/IHVybC5yZXBsYWNlKC9eZmlsZTpcL1wvLywgJycpIDogdW5kZWZpbmVkOwoKICAvLyBDYWxsRnJhbWUgcm93L2NvbCBhcmUgMCBiYXNlZCwgd2hlcmVhcyBTdGFja0ZyYW1lIGFyZSAxIGJhc2VkCiAgY29uc3QgY29sbm8gPSBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5jb2x1bW5OdW1iZXIgKyAxIDogdW5kZWZpbmVkOwogIGNvbnN0IGxpbmVubyA9IGZyYW1lLmxvY2F0aW9uLmxpbmVOdW1iZXIgPyBmcmFtZS5sb2NhdGlvbi5saW5lTnVtYmVyICsgMSA6IHVuZGVmaW5lZDsKCiAgcmV0dXJuIGRyb3BVbmRlZmluZWRLZXlzKHsKICAgIGZpbGVuYW1lLAogICAgbW9kdWxlOiBnZXRNb2R1bGVGcm9tRmlsZW5hbWUoZmlsZW5hbWUpLAogICAgZnVuY3Rpb246IGZyYW1lLmZ1bmN0aW9uTmFtZSB8fCAnPycsCiAgICBjb2xubywKICAgIGxpbmVubywKICAgIGluX2FwcDogZmlsZW5hbWUgPyBmaWxlbmFtZUlzSW5BcHAoZmlsZW5hbWUpIDogdW5kZWZpbmVkLAogIH0pOwp9CgovKioKICogVGhpcyBzZXJ2ZXMgYXMgYSBidWlsZCB0aW1lIGZsYWcgdGhhdCB3aWxsIGJlIHRydWUgYnkgZGVmYXVsdCwgYnV0IGZhbHNlIGluIG5vbi1kZWJ1ZyBidWlsZHMgb3IgaWYgdXNlcnMgcmVwbGFjZSBgX19TRU5UUllfREVCVUdfX2AgaW4gdGhlaXIgZ2VuZXJhdGVkIGNvZGUuCiAqCiAqIEFUVEVOVElPTjogVGhpcyBjb25zdGFudCBtdXN0IG5ldmVyIGNyb3NzIHBhY2thZ2UgYm91bmRhcmllcyAoaS5lLiBiZSBleHBvcnRlZCkgdG8gZ3VhcmFudGVlIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIHRyZWUgc2hha2luZy4KICovCmNvbnN0IERFQlVHX0JVSUxEID0gKHR5cGVvZiBfX1NFTlRSWV9ERUJVR19fID09PSAndW5kZWZpbmVkJyB8fCBfX1NFTlRSWV9ERUJVR19fKTsKCmNvbnN0IERFRkFVTFRfRU5WSVJPTk1FTlQgPSAncHJvZHVjdGlvbic7CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIGV2ZW50IHByb2Nlc3NvcnMuCiAqIEBkZXByZWNhdGVkIEdsb2JhbCBldmVudCBwcm9jZXNzb3JzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICovCmZ1bmN0aW9uIGdldEdsb2JhbEV2ZW50UHJvY2Vzc29ycygpIHsKICByZXR1cm4gZ2V0R2xvYmFsU2luZ2xldG9uKCdnbG9iYWxFdmVudFByb2Nlc3NvcnMnLCAoKSA9PiBbXSk7Cn0KCi8qKgogKiBQcm9jZXNzIGFuIGFycmF5IG9mIGV2ZW50IHByb2Nlc3NvcnMsIHJldHVybmluZyB0aGUgcHJvY2Vzc2VkIGV2ZW50IChvciBgbnVsbGAgaWYgdGhlIGV2ZW50IHdhcyBkcm9wcGVkKS4KICovCmZ1bmN0aW9uIG5vdGlmeUV2ZW50UHJvY2Vzc29ycygKICBwcm9jZXNzb3JzLAogIGV2ZW50LAogIGhpbnQsCiAgaW5kZXggPSAwLAopIHsKICByZXR1cm4gbmV3IFN5bmNQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGNvbnN0IHByb2Nlc3NvciA9IHByb2Nlc3NvcnNbaW5kZXhdOwogICAgaWYgKGV2ZW50ID09PSBudWxsIHx8IHR5cGVvZiBwcm9jZXNzb3IgIT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzb2x2ZShldmVudCk7CiAgICB9IGVsc2UgewogICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3IoeyAuLi5ldmVudCB9LCBoaW50KSA7CgogICAgICBERUJVR19CVUlMRCAmJiBwcm9jZXNzb3IuaWQgJiYgcmVzdWx0ID09PSBudWxsICYmIGxvZ2dlci5sb2coYEV2ZW50IHByb2Nlc3NvciAiJHtwcm9jZXNzb3IuaWR9IiBkcm9wcGVkIGV2ZW50YCk7CgogICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7CiAgICAgICAgdm9pZCByZXN1bHQKICAgICAgICAgIC50aGVuKGZpbmFsID0+IG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCBmaW5hbCwgaGludCwgaW5kZXggKyAxKS50aGVuKHJlc29sdmUpKQogICAgICAgICAgLnRoZW4obnVsbCwgcmVqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2b2lkIG5vdGlmeUV2ZW50UHJvY2Vzc29ycyhwcm9jZXNzb3JzLCByZXN1bHQsIGhpbnQsIGluZGV4ICsgMSkKICAgICAgICAgIC50aGVuKHJlc29sdmUpCiAgICAgICAgICAudGhlbihudWxsLCByZWplY3QpOwogICAgICB9CiAgICB9CiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgbmV3IGBTZXNzaW9uYCBvYmplY3QgYnkgc2V0dGluZyBjZXJ0YWluIGRlZmF1bHQgcGFyYW1ldGVycy4gSWYgb3B0aW9uYWwgQHBhcmFtIGNvbnRleHQKICogaXMgcGFzc2VkLCB0aGUgcGFzc2VkIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8gdGhlIHNlc3Npb24gb2JqZWN0LgogKgogKiBAcGFyYW0gY29udGV4dCAob3B0aW9uYWwpIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIHRvIHRoZSByZXR1cm5lZCBzZXNzaW9uIG9iamVjdAogKgogKiBAcmV0dXJucyBhIG5ldyBgU2Vzc2lvbmAgb2JqZWN0CiAqLwpmdW5jdGlvbiBtYWtlU2Vzc2lvbihjb250ZXh0KSB7CiAgLy8gQm90aCB0aW1lc3RhbXAgYW5kIHN0YXJ0ZWQgYXJlIGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guCiAgY29uc3Qgc3RhcnRpbmdUaW1lID0gdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGNvbnN0IHNlc3Npb24gPSB7CiAgICBzaWQ6IHV1aWQ0KCksCiAgICBpbml0OiB0cnVlLAogICAgdGltZXN0YW1wOiBzdGFydGluZ1RpbWUsCiAgICBzdGFydGVkOiBzdGFydGluZ1RpbWUsCiAgICBkdXJhdGlvbjogMCwKICAgIHN0YXR1czogJ29rJywKICAgIGVycm9yczogMCwKICAgIGlnbm9yZUR1cmF0aW9uOiBmYWxzZSwKICAgIHRvSlNPTjogKCkgPT4gc2Vzc2lvblRvSlNPTihzZXNzaW9uKSwKICB9OwoKICBpZiAoY29udGV4dCkgewogICAgdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0KTsKICB9CgogIHJldHVybiBzZXNzaW9uOwp9CgovKioKICogVXBkYXRlcyBhIHNlc3Npb24gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcGFzc2VkIGluIHRoZSBjb250ZXh0LgogKgogKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBwYXNzZWQgb2JqZWN0IGFuZCByZXR1cm5zIHZvaWQuCiAqIChIYWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBhbmQgdXBkYXRlZCBzZXNzaW9uIGJlY2F1c2UgY2xvc2luZyBhbmQgc2VuZGluZyBhIHNlc3Npb24KICogbWFrZXMgYW4gdXBkYXRlIHRvIHRoZSBzZXNzaW9uIGFmdGVyIGl0IHdhcyBwYXNzZWQgdG8gdGhlIHNlbmRpbmcgbG9naWMuCiAqIEBzZWUgQmFzZUNsaWVudC5jYXB0dXJlU2Vzc2lvbiApCiAqCiAqIEBwYXJhbSBzZXNzaW9uIHRoZSBgU2Vzc2lvbmAgdG8gdXBkYXRlCiAqIEBwYXJhbSBjb250ZXh0IHRoZSBgU2Vzc2lvbkNvbnRleHRgIGhvbGRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBpbiBAcGFyYW0gc2Vzc2lvbgogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHkKZnVuY3Rpb24gdXBkYXRlU2Vzc2lvbihzZXNzaW9uLCBjb250ZXh0ID0ge30pIHsKICBpZiAoY29udGV4dC51c2VyKSB7CiAgICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQudXNlci5pcF9hZGRyZXNzKSB7CiAgICAgIHNlc3Npb24uaXBBZGRyZXNzID0gY29udGV4dC51c2VyLmlwX2FkZHJlc3M7CiAgICB9CgogICAgaWYgKCFzZXNzaW9uLmRpZCAmJiAhY29udGV4dC5kaWQpIHsKICAgICAgc2Vzc2lvbi5kaWQgPSBjb250ZXh0LnVzZXIuaWQgfHwgY29udGV4dC51c2VyLmVtYWlsIHx8IGNvbnRleHQudXNlci51c2VybmFtZTsKICAgIH0KICB9CgogIHNlc3Npb24udGltZXN0YW1wID0gY29udGV4dC50aW1lc3RhbXAgfHwgdGltZXN0YW1wSW5TZWNvbmRzKCk7CgogIGlmIChjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbSkgewogICAgc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20gPSBjb250ZXh0LmFibm9ybWFsX21lY2hhbmlzbTsKICB9CgogIGlmIChjb250ZXh0Lmlnbm9yZUR1cmF0aW9uKSB7CiAgICBzZXNzaW9uLmlnbm9yZUR1cmF0aW9uID0gY29udGV4dC5pZ25vcmVEdXJhdGlvbjsKICB9CiAgaWYgKGNvbnRleHQuc2lkKSB7CiAgICAvLyBHb29kIGVub3VnaCB1dWlkIHZhbGlkYXRpb24uIOKAlCBLYW1pbAogICAgc2Vzc2lvbi5zaWQgPSBjb250ZXh0LnNpZC5sZW5ndGggPT09IDMyID8gY29udGV4dC5zaWQgOiB1dWlkNCgpOwogIH0KICBpZiAoY29udGV4dC5pbml0ICE9PSB1bmRlZmluZWQpIHsKICAgIHNlc3Npb24uaW5pdCA9IGNvbnRleHQuaW5pdDsKICB9CiAgaWYgKCFzZXNzaW9uLmRpZCAmJiBjb250ZXh0LmRpZCkgewogICAgc2Vzc2lvbi5kaWQgPSBgJHtjb250ZXh0LmRpZH1gOwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuc3RhcnRlZCA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uc3RhcnRlZCA9IGNvbnRleHQuc3RhcnRlZDsKICB9CiAgaWYgKHNlc3Npb24uaWdub3JlRHVyYXRpb24pIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSB1bmRlZmluZWQ7CiAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dC5kdXJhdGlvbiA9PT0gJ251bWJlcicpIHsKICAgIHNlc3Npb24uZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uOwogIH0gZWxzZSB7CiAgICBjb25zdCBkdXJhdGlvbiA9IHNlc3Npb24udGltZXN0YW1wIC0gc2Vzc2lvbi5zdGFydGVkOwogICAgc2Vzc2lvbi5kdXJhdGlvbiA9IGR1cmF0aW9uID49IDAgPyBkdXJhdGlvbiA6IDA7CiAgfQogIGlmIChjb250ZXh0LnJlbGVhc2UpIHsKICAgIHNlc3Npb24ucmVsZWFzZSA9IGNvbnRleHQucmVsZWFzZTsKICB9CiAgaWYgKGNvbnRleHQuZW52aXJvbm1lbnQpIHsKICAgIHNlc3Npb24uZW52aXJvbm1lbnQgPSBjb250ZXh0LmVudmlyb25tZW50OwogIH0KICBpZiAoIXNlc3Npb24uaXBBZGRyZXNzICYmIGNvbnRleHQuaXBBZGRyZXNzKSB7CiAgICBzZXNzaW9uLmlwQWRkcmVzcyA9IGNvbnRleHQuaXBBZGRyZXNzOwogIH0KICBpZiAoIXNlc3Npb24udXNlckFnZW50ICYmIGNvbnRleHQudXNlckFnZW50KSB7CiAgICBzZXNzaW9uLnVzZXJBZ2VudCA9IGNvbnRleHQudXNlckFnZW50OwogIH0KICBpZiAodHlwZW9mIGNvbnRleHQuZXJyb3JzID09PSAnbnVtYmVyJykgewogICAgc2Vzc2lvbi5lcnJvcnMgPSBjb250ZXh0LmVycm9yczsKICB9CiAgaWYgKGNvbnRleHQuc3RhdHVzKSB7CiAgICBzZXNzaW9uLnN0YXR1cyA9IGNvbnRleHQuc3RhdHVzOwogIH0KfQoKLyoqCiAqIENsb3NlcyBhIHNlc3Npb24gYnkgc2V0dGluZyBpdHMgc3RhdHVzIGFuZCB1cGRhdGluZyB0aGUgc2Vzc2lvbiBvYmplY3Qgd2l0aCBpdC4KICogSW50ZXJuYWxseSBjYWxscyBgdXBkYXRlU2Vzc2lvbmAgdG8gdXBkYXRlIHRoZSBwYXNzZWQgc2Vzc2lvbiBvYmplY3QuCiAqCiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHBhc3NlZCBzZXNzaW9uIChAc2VlIHVwZGF0ZVNlc3Npb24gZm9yIGV4cGxhbmF0aW9uKS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIGBTZXNzaW9uYCBvYmplY3QgdG8gYmUgY2xvc2VkCiAqIEBwYXJhbSBzdGF0dXMgdGhlIGBTZXNzaW9uU3RhdHVzYCB3aXRoIHdoaWNoIHRoZSBzZXNzaW9uIHdhcyBjbG9zZWQuIElmIHlvdSBkb24ndCBwYXNzIGEgc3RhdHVzLAogKiAgICAgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBrZWVwIHRoZSBwcmV2aW91c2x5IHNldCBzdGF0dXMsIHVubGVzcyBpdCB3YXMgYCdvaydgIGluIHdoaWNoIGNhc2UKICogICAgICAgICAgICAgICBpdCBpcyBjaGFuZ2VkIHRvIGAnZXhpdGVkJ2AuCiAqLwpmdW5jdGlvbiBjbG9zZVNlc3Npb24oc2Vzc2lvbiwgc3RhdHVzKSB7CiAgbGV0IGNvbnRleHQgPSB7fTsKICBpZiAoc3RhdHVzKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXMgfTsKICB9IGVsc2UgaWYgKHNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICBjb250ZXh0ID0geyBzdGF0dXM6ICdleGl0ZWQnIH07CiAgfQoKICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIGNvbnRleHQpOwp9CgovKioKICogU2VyaWFsaXplcyBhIHBhc3NlZCBzZXNzaW9uIG9iamVjdCB0byBhIEpTT04gb2JqZWN0IHdpdGggYSBzbGlnaHRseSBkaWZmZXJlbnQgc3RydWN0dXJlLgogKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBTZW50cnkgYmFja2VuZCByZXF1aXJlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzY2hlbWEgb2YgYSBzZXNzaW9uCiAqIHRoYW4gdGhlIG9uZSB0aGUgSlMgU0RLcyB1c2UgaW50ZXJuYWxseS4KICoKICogQHBhcmFtIHNlc3Npb24gdGhlIHNlc3Npb24gdG8gYmUgY29udmVydGVkCiAqCiAqIEByZXR1cm5zIGEgSlNPTiBvYmplY3Qgb2YgdGhlIHBhc3NlZCBzZXNzaW9uCiAqLwpmdW5jdGlvbiBzZXNzaW9uVG9KU09OKHNlc3Npb24pIHsKICByZXR1cm4gZHJvcFVuZGVmaW5lZEtleXMoewogICAgc2lkOiBgJHtzZXNzaW9uLnNpZH1gLAogICAgaW5pdDogc2Vzc2lvbi5pbml0LAogICAgLy8gTWFrZSBzdXJlIHRoYXQgc2VjIGlzIGNvbnZlcnRlZCB0byBtcyBmb3IgZGF0ZSBjb25zdHJ1Y3RvcgogICAgc3RhcnRlZDogbmV3IERhdGUoc2Vzc2lvbi5zdGFydGVkICogMTAwMCkudG9JU09TdHJpbmcoKSwKICAgIHRpbWVzdGFtcDogbmV3IERhdGUoc2Vzc2lvbi50aW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpLAogICAgc3RhdHVzOiBzZXNzaW9uLnN0YXR1cywKICAgIGVycm9yczogc2Vzc2lvbi5lcnJvcnMsCiAgICBkaWQ6IHR5cGVvZiBzZXNzaW9uLmRpZCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHNlc3Npb24uZGlkID09PSAnc3RyaW5nJyA/IGAke3Nlc3Npb24uZGlkfWAgOiB1bmRlZmluZWQsCiAgICBkdXJhdGlvbjogc2Vzc2lvbi5kdXJhdGlvbiwKICAgIGFibm9ybWFsX21lY2hhbmlzbTogc2Vzc2lvbi5hYm5vcm1hbF9tZWNoYW5pc20sCiAgICBhdHRyczogewogICAgICByZWxlYXNlOiBzZXNzaW9uLnJlbGVhc2UsCiAgICAgIGVudmlyb25tZW50OiBzZXNzaW9uLmVudmlyb25tZW50LAogICAgICBpcF9hZGRyZXNzOiBzZXNzaW9uLmlwQWRkcmVzcywKICAgICAgdXNlcl9hZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsCiAgICB9LAogIH0pOwp9Cgpjb25zdCBUUkFDRV9GTEFHX1NBTVBMRUQgPSAweDE7CgovKioKICogQ29udmVydCBhIHNwYW4gdG8gYSB0cmFjZSBjb250ZXh0LCB3aGljaCBjYW4gYmUgc2VudCBhcyB0aGUgYHRyYWNlYCBjb250ZXh0IGluIGFuIGV2ZW50LgogKi8KZnVuY3Rpb24gc3BhblRvVHJhY2VDb250ZXh0KHNwYW4pIHsKICBjb25zdCB7IHNwYW5JZDogc3Bhbl9pZCwgdHJhY2VJZDogdHJhY2VfaWQgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICBjb25zdCB7IGRhdGEsIG9wLCBwYXJlbnRfc3Bhbl9pZCwgc3RhdHVzLCB0YWdzLCBvcmlnaW4gfSA9IHNwYW5Ub0pTT04oc3Bhbik7CgogIHJldHVybiBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBkYXRhLAogICAgb3AsCiAgICBwYXJlbnRfc3Bhbl9pZCwKICAgIHNwYW5faWQsCiAgICBzdGF0dXMsCiAgICB0YWdzLAogICAgdHJhY2VfaWQsCiAgICBvcmlnaW4sCiAgfSk7Cn0KCi8qKgogKiBDb252ZXJ0IGEgc3BhbiB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uCiAqIE5vdGUgdGhhdCBhbGwgZmllbGRzIHJldHVybmVkIGhlcmUgYXJlIG9wdGlvbmFsIGFuZCBuZWVkIHRvIGJlIGd1YXJkZWQgYWdhaW5zdC4KICoKICogTm90ZTogQmVjYXVzZSBvZiB0aGlzLCB3ZSBjdXJyZW50bHkgaGF2ZSBhIGNpcmN1bGFyIHR5cGUgZGVwZW5kZW5jeSAod2hpY2ggd2Ugb3B0ZWQgb3V0IG9mIGluIHBhY2thZ2UuanNvbikuCiAqIFRoaXMgaXMgbm90IGF2b2lkYWJsZSBhcyB3ZSBuZWVkIGBzcGFuVG9KU09OYCBpbiBgc3BhblV0aWxzLnRzYCwgd2hpY2ggaW4gdHVybiBpcyBuZWVkZWQgYnkgYHNwYW4udHNgIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICogQW5kIGBzcGFuVG9KU09OYCBuZWVkcyB0aGUgU3BhbiBjbGFzcyBmcm9tIGBzcGFuLnRzYCB0byBjaGVjayBoZXJlLgogKiBUT0RPIHY4OiBXaGVuIHdlIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBzdHVmZiBmcm9tIGBzcGFuLnRzYCwgd2UgY2FuIHJlbW92ZSB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeSBhZ2Fpbi4KICovCmZ1bmN0aW9uIHNwYW5Ub0pTT04oc3BhbikgewogIGlmIChzcGFuSXNTcGFuQ2xhc3Moc3BhbikpIHsKICAgIHJldHVybiBzcGFuLmdldFNwYW5KU09OKCk7CiAgfQoKICAvLyBGYWxsYmFjazogV2UgYWxzbyBjaGVjayBmb3IgYC50b0pTT04oKWAgaGVyZS4uLgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGlmICh0eXBlb2Ygc3Bhbi50b0pTT04gPT09ICdmdW5jdGlvbicpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgcmV0dXJuIHNwYW4udG9KU09OKCk7CiAgfQoKICByZXR1cm4ge307Cn0KCi8qKgogKiBTYWRseSwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2hlY2tzIHdlIGNhbm5vdCBhY3R1YWxseSBpbXBvcnQgdGhlIFNwYW4gY2xhc3MgaGVyZSBhbmQgY2hlY2sgZm9yIGluc3RhbmNlb2YuCiAqIDooIFNvIGluc3RlYWQgd2UgYXBwcm94aW1hdGUgdGhpcyBieSBjaGVja2luZyBpZiBpdCBoYXMgdGhlIGBnZXRTcGFuSlNPTmAgbWV0aG9kLgogKi8KZnVuY3Rpb24gc3BhbklzU3BhbkNsYXNzKHNwYW4pIHsKICByZXR1cm4gdHlwZW9mIChzcGFuICkuZ2V0U3BhbkpTT04gPT09ICdmdW5jdGlvbic7Cn0KCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgYSBzcGFuIGlzIHNhbXBsZWQuCiAqIEluIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQganVzdCB1c2UgYHNwYW4uaXNSZWNvcmRpbmcoKWAgaW5zdGVhZC4KICogSG93ZXZlciwgdGhpcyBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2VtYW50aWMsIGFzIGl0IGFsc28gcmV0dXJucyBmYWxzZSBpZiB0aGUgc3BhbiBpcyBmaW5pc2hlZC4KICogU28gaW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBkaXN0aW5jdGlvbiBpcyBpbXBvcnRhbnQsIHVzZSB0aGlzIG1ldGhvZC4KICovCmZ1bmN0aW9uIHNwYW5Jc1NhbXBsZWQoc3BhbikgewogIC8vIFdlIGFsaWduIG91ciB0cmFjZSBmbGFncyB3aXRoIHRoZSBvbmVzIE9wZW5UZWxlbWV0cnkgdXNlCiAgLy8gU28gd2UgYWxzbyBjaGVjayBmb3Igc2FtcGxlZCB0aGUgc2FtZSB3YXkgdGhleSBkby4KICBjb25zdCB7IHRyYWNlRmxhZ3MgfSA9IHNwYW4uc3BhbkNvbnRleHQoKTsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZQogIHJldHVybiBCb29sZWFuKHRyYWNlRmxhZ3MgJiBUUkFDRV9GTEFHX1NBTVBMRUQpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIGNsaWVudC4KICovCmZ1bmN0aW9uIGdldENsaWVudCgpIHsKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICByZXR1cm4gZ2V0Q3VycmVudEh1YigpLmdldENsaWVudCgpOwp9CgovKioKICogR2V0IHRoZSBjdXJyZW50bHkgYWN0aXZlIHNjb3BlLgogKi8KZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkgewogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBnZXRDdXJyZW50SHViKCkuZ2V0U2NvcGUoKTsKfQoKLyoqCiAqIFJldHVybnMgdGhlIHJvb3Qgc3BhbiBvZiBhIGdpdmVuIHNwYW4uCiAqCiAqIEFzIGxvbmcgYXMgd2UgdXNlIGBUcmFuc2FjdGlvbmBzIGludGVybmFsbHksIHRoZSByZXR1cm5lZCByb290IHNwYW4KICogd2lsbCBiZSBhIGBUcmFuc2FjdGlvbmAgYnV0IGJlIGF3YXJlIHRoYXQgdGhpcyBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KICoKICogSWYgdGhlIGdpdmVuIHNwYW4gaGFzIG5vIHJvb3Qgc3BhbiBvciB0cmFuc2FjdGlvbiwgYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuCiAqLwpmdW5jdGlvbiBnZXRSb290U3BhbihzcGFuKSB7CiAgLy8gVE9ETyAodjgpOiBSZW1vdmUgdGhpcyBjaGVjayBhbmQganVzdCByZXR1cm4gc3BhbgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIHJldHVybiBzcGFuLnRyYW5zYWN0aW9uOwp9CgovKioKICogQ3JlYXRlcyBhIGR5bmFtaWMgc2FtcGxpbmcgY29udGV4dCBmcm9tIGEgY2xpZW50LgogKgogKiBEaXNwYXRjaGVzIHRoZSBgY3JlYXRlRHNjYCBsaWZlY3ljbGUgaG9vayBhcyBhIHNpZGUgZWZmZWN0LgogKi8KZnVuY3Rpb24gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoCiAgdHJhY2VfaWQsCiAgY2xpZW50LAogIHNjb3BlLAopIHsKICBjb25zdCBvcHRpb25zID0gY2xpZW50LmdldE9wdGlvbnMoKTsKCiAgY29uc3QgeyBwdWJsaWNLZXk6IHB1YmxpY19rZXkgfSA9IGNsaWVudC5nZXREc24oKSB8fCB7fTsKICAvLyBUT0RPKHY4KTogUmVtb3ZlIHNlZ21lbnQgZnJvbSBVc2VyCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgY29uc3QgeyBzZWdtZW50OiB1c2VyX3NlZ21lbnQgfSA9IChzY29wZSAmJiBzY29wZS5nZXRVc2VyKCkpIHx8IHt9OwoKICBjb25zdCBkc2MgPSBkcm9wVW5kZWZpbmVkS2V5cyh7CiAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCB8fCBERUZBVUxUX0VOVklST05NRU5ULAogICAgcmVsZWFzZTogb3B0aW9ucy5yZWxlYXNlLAogICAgdXNlcl9zZWdtZW50LAogICAgcHVibGljX2tleSwKICAgIHRyYWNlX2lkLAogIH0pIDsKCiAgY2xpZW50LmVtaXQgJiYgY2xpZW50LmVtaXQoJ2NyZWF0ZURzYycsIGRzYyk7CgogIHJldHVybiBkc2M7Cn0KCi8qKgogKiBBIFNwYW4gd2l0aCBhIGZyb3plbiBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQuCiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQgZnJvbSBhIHNwYW4gKGFuZCBjbGllbnQgYW5kIHNjb3BlKQogKgogKiBAcGFyYW0gc3BhbiB0aGUgc3BhbiBmcm9tIHdoaWNoIGEgZmV3IHZhbHVlcyBsaWtlIHRoZSByb290IHNwYW4gbmFtZSBhbmQgc2FtcGxlIHJhdGUgYXJlIGV4dHJhY3RlZC4KICoKICogQHJldHVybnMgYSBkeW5hbWljIHNhbXBsaW5nIGNvbnRleHQKICovCmZ1bmN0aW9uIGdldER5bmFtaWNTYW1wbGluZ0NvbnRleHRGcm9tU3BhbihzcGFuKSB7CiAgY29uc3QgY2xpZW50ID0gZ2V0Q2xpZW50KCk7CiAgaWYgKCFjbGllbnQpIHsKICAgIHJldHVybiB7fTsKICB9CgogIC8vIHBhc3NpbmcgZW1pdD1mYWxzZSBoZXJlIHRvIG9ubHkgZW1pdCBsYXRlciBvbmNlIHRoZSBEU0MgaXMgYWN0dWFsbHkgcG9wdWxhdGVkCiAgY29uc3QgZHNjID0gZ2V0RHluYW1pY1NhbXBsaW5nQ29udGV4dEZyb21DbGllbnQoc3BhblRvSlNPTihzcGFuKS50cmFjZV9pZCB8fCAnJywgY2xpZW50LCBnZXRDdXJyZW50U2NvcGUoKSk7CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIGNvbnN0IHR4biA9IGdldFJvb3RTcGFuKHNwYW4pIDsKICBpZiAoIXR4bikgewogICAgcmV0dXJuIGRzYzsKICB9CgogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHY3RnJvemVuRHNjIGFzIGEgVHJhbnNhY3Rpb24gd2lsbCBubyBsb25nZXIgaGF2ZSBfZnJvemVuRHluYW1pY1NhbXBsaW5nQ29udGV4dAogIC8vIEZvciBub3cgd2UgbmVlZCB0byBhdm9pZCBicmVha2luZyB1c2VycyB3aG8gZGlyZWN0bHkgY3JlYXRlZCBhIHR4biB3aXRoIGEgRFNDLCB3aGVyZSB0aGlzIGZpZWxkIGlzIHN0aWxsIHNldC4KICAvLyBAc2VlIFRyYW5zYWN0aW9uIGNsYXNzIGNvbnN0cnVjdG9yCiAgY29uc3QgdjdGcm96ZW5Ec2MgPSB0eG4gJiYgdHhuLl9mcm96ZW5EeW5hbWljU2FtcGxpbmdDb250ZXh0OwogIGlmICh2N0Zyb3plbkRzYykgewogICAgcmV0dXJuIHY3RnJvemVuRHNjOwogIH0KCiAgLy8gVE9ETyAodjgpOiBSZXBsYWNlIHR4bi5tZXRhZGF0YSB3aXRoIHR4bi5hdHRyaWJ1dGVzW10KICAvLyBXZSBjYW4ndCBkbyB0aGlzIHlldCBiZWNhdXNlIGF0dHJpYnV0ZXMgYXJlbid0IGFsd2F5cyBzZXQgeWV0LgogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogIGNvbnN0IHsgc2FtcGxlUmF0ZTogbWF5YmVTYW1wbGVSYXRlLCBzb3VyY2UgfSA9IHR4bi5tZXRhZGF0YTsKICBpZiAobWF5YmVTYW1wbGVSYXRlICE9IG51bGwpIHsKICAgIGRzYy5zYW1wbGVfcmF0ZSA9IGAke21heWJlU2FtcGxlUmF0ZX1gOwogIH0KCiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIGEgdHJhbnNhY3Rpb24gbmFtZSBpbiB0aGUgRFNDIGlmIHRoZSBzb3VyY2UgaXMgInVybCIgYmVjYXVzZSBVUkxzIG1pZ2h0IGNvbnRhaW4gUElJCiAgY29uc3QganNvblNwYW4gPSBzcGFuVG9KU09OKHR4bik7CgogIC8vIGFmdGVyIEpTT04gY29udmVyc2lvbiwgdHhuLm5hbWUgYmVjb21lcyBqc29uU3Bhbi5kZXNjcmlwdGlvbgogIGlmIChzb3VyY2UgJiYgc291cmNlICE9PSAndXJsJykgewogICAgZHNjLnRyYW5zYWN0aW9uID0ganNvblNwYW4uZGVzY3JpcHRpb247CiAgfQoKICBkc2Muc2FtcGxlZCA9IFN0cmluZyhzcGFuSXNTYW1wbGVkKHR4bikpOwoKICBjbGllbnQuZW1pdCAmJiBjbGllbnQuZW1pdCgnY3JlYXRlRHNjJywgZHNjKTsKCiAgcmV0dXJuIGRzYzsKfQoKLyoqCiAqIEFwcGxpZXMgZGF0YSBmcm9tIHRoZSBzY29wZSB0byB0aGUgZXZlbnQgYW5kIHJ1bnMgYWxsIGV2ZW50IHByb2Nlc3NvcnMgb24gaXQuCiAqLwpmdW5jdGlvbiBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7IGZpbmdlcnByaW50LCBzcGFuLCBicmVhZGNydW1icywgc2RrUHJvY2Vzc2luZ01ldGFkYXRhIH0gPSBkYXRhOwoKICAvLyBBcHBseSBnZW5lcmFsIGRhdGEKICBhcHBseURhdGFUb0V2ZW50KGV2ZW50LCBkYXRhKTsKCiAgLy8gV2Ugd2FudCB0byBzZXQgdGhlIHRyYWNlIGNvbnRleHQgZm9yIG5vcm1hbCBldmVudHMgb25seSBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CiAgLy8gYSB0cmFjZSBjb250ZXh0IG9uIHRoZSBldmVudC4gVGhlcmUgaXMgYSBwcm9kdWN0IGZlYXR1cmUgaW4gcGxhY2Ugd2hlcmUgd2UgbGluawogIC8vIGVycm9ycyB3aXRoIHRyYW5zYWN0aW9uIGFuZCBpdCByZWxpZXMgb24gdGhhdC4KICBpZiAoc3BhbikgewogICAgYXBwbHlTcGFuVG9FdmVudChldmVudCwgc3Bhbik7CiAgfQoKICBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpOwogIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icyk7CiAgYXBwbHlTZGtNZXRhZGF0YVRvRXZlbnQoZXZlbnQsIHNka1Byb2Nlc3NpbmdNZXRhZGF0YSk7Cn0KCmZ1bmN0aW9uIGFwcGx5RGF0YVRvRXZlbnQoZXZlbnQsIGRhdGEpIHsKICBjb25zdCB7CiAgICBleHRyYSwKICAgIHRhZ3MsCiAgICB1c2VyLAogICAgY29udGV4dHMsCiAgICBsZXZlbCwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdHJhbnNhY3Rpb25OYW1lLAogIH0gPSBkYXRhOwoKICBjb25zdCBjbGVhbmVkRXh0cmEgPSBkcm9wVW5kZWZpbmVkS2V5cyhleHRyYSk7CiAgaWYgKGNsZWFuZWRFeHRyYSAmJiBPYmplY3Qua2V5cyhjbGVhbmVkRXh0cmEpLmxlbmd0aCkgewogICAgZXZlbnQuZXh0cmEgPSB7IC4uLmNsZWFuZWRFeHRyYSwgLi4uZXZlbnQuZXh0cmEgfTsKICB9CgogIGNvbnN0IGNsZWFuZWRUYWdzID0gZHJvcFVuZGVmaW5lZEtleXModGFncyk7CiAgaWYgKGNsZWFuZWRUYWdzICYmIE9iamVjdC5rZXlzKGNsZWFuZWRUYWdzKS5sZW5ndGgpIHsKICAgIGV2ZW50LnRhZ3MgPSB7IC4uLmNsZWFuZWRUYWdzLCAuLi5ldmVudC50YWdzIH07CiAgfQoKICBjb25zdCBjbGVhbmVkVXNlciA9IGRyb3BVbmRlZmluZWRLZXlzKHVzZXIpOwogIGlmIChjbGVhbmVkVXNlciAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVXNlcikubGVuZ3RoKSB7CiAgICBldmVudC51c2VyID0geyAuLi5jbGVhbmVkVXNlciwgLi4uZXZlbnQudXNlciB9OwogIH0KCiAgY29uc3QgY2xlYW5lZENvbnRleHRzID0gZHJvcFVuZGVmaW5lZEtleXMoY29udGV4dHMpOwogIGlmIChjbGVhbmVkQ29udGV4dHMgJiYgT2JqZWN0LmtleXMoY2xlYW5lZENvbnRleHRzKS5sZW5ndGgpIHsKICAgIGV2ZW50LmNvbnRleHRzID0geyAuLi5jbGVhbmVkQ29udGV4dHMsIC4uLmV2ZW50LmNvbnRleHRzIH07CiAgfQoKICBpZiAobGV2ZWwpIHsKICAgIGV2ZW50LmxldmVsID0gbGV2ZWw7CiAgfQoKICBpZiAodHJhbnNhY3Rpb25OYW1lKSB7CiAgICBldmVudC50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uTmFtZTsKICB9Cn0KCmZ1bmN0aW9uIGFwcGx5QnJlYWRjcnVtYnNUb0V2ZW50KGV2ZW50LCBicmVhZGNydW1icykgewogIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWJzID0gWy4uLihldmVudC5icmVhZGNydW1icyB8fCBbXSksIC4uLmJyZWFkY3J1bWJzXTsKICBldmVudC5icmVhZGNydW1icyA9IG1lcmdlZEJyZWFkY3J1bWJzLmxlbmd0aCA/IG1lcmdlZEJyZWFkY3J1bWJzIDogdW5kZWZpbmVkOwp9CgpmdW5jdGlvbiBhcHBseVNka01ldGFkYXRhVG9FdmVudChldmVudCwgc2RrUHJvY2Vzc2luZ01ldGFkYXRhKSB7CiAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgLi4uZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogICAgLi4uc2RrUHJvY2Vzc2luZ01ldGFkYXRhLAogIH07Cn0KCmZ1bmN0aW9uIGFwcGx5U3BhblRvRXZlbnQoZXZlbnQsIHNwYW4pIHsKICBldmVudC5jb250ZXh0cyA9IHsgdHJhY2U6IHNwYW5Ub1RyYWNlQ29udGV4dChzcGFuKSwgLi4uZXZlbnQuY29udGV4dHMgfTsKICBjb25zdCByb290U3BhbiA9IGdldFJvb3RTcGFuKHNwYW4pOwogIGlmIChyb290U3BhbikgewogICAgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0gewogICAgICBkeW5hbWljU2FtcGxpbmdDb250ZXh0OiBnZXREeW5hbWljU2FtcGxpbmdDb250ZXh0RnJvbVNwYW4oc3BhbiksCiAgICAgIC4uLmV2ZW50LnNka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgIH07CiAgICBjb25zdCB0cmFuc2FjdGlvbk5hbWUgPSBzcGFuVG9KU09OKHJvb3RTcGFuKS5kZXNjcmlwdGlvbjsKICAgIGlmICh0cmFuc2FjdGlvbk5hbWUpIHsKICAgICAgZXZlbnQudGFncyA9IHsgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uTmFtZSwgLi4uZXZlbnQudGFncyB9OwogICAgfQogIH0KfQoKLyoqCiAqIEFwcGxpZXMgZmluZ2VycHJpbnQgZnJvbSB0aGUgc2NvcGUgdG8gdGhlIGV2ZW50IGlmIHRoZXJlJ3Mgb25lLAogKiB1c2VzIG1lc3NhZ2UgaWYgdGhlcmUncyBvbmUgaW5zdGVhZCBvciBnZXQgcmlkIG9mIGVtcHR5IGZpbmdlcnByaW50CiAqLwpmdW5jdGlvbiBhcHBseUZpbmdlcnByaW50VG9FdmVudChldmVudCwgZmluZ2VycHJpbnQpIHsKICAvLyBNYWtlIHN1cmUgaXQncyBhbiBhcnJheSBmaXJzdCBhbmQgd2UgYWN0dWFsbHkgaGF2ZSBzb21ldGhpbmcgaW4gcGxhY2UKICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50ID8gYXJyYXlpZnkoZXZlbnQuZmluZ2VycHJpbnQpIDogW107CgogIC8vIElmIHdlIGhhdmUgc29tZXRoaW5nIG9uIHRoZSBzY29wZSwgdGhlbiBtZXJnZSBpdCB3aXRoIGV2ZW50CiAgaWYgKGZpbmdlcnByaW50KSB7CiAgICBldmVudC5maW5nZXJwcmludCA9IGV2ZW50LmZpbmdlcnByaW50LmNvbmNhdChmaW5nZXJwcmludCk7CiAgfQoKICAvLyBJZiB3ZSBoYXZlIG5vIGRhdGEgYXQgYWxsLCByZW1vdmUgZW1wdHkgYXJyYXkgZGVmYXVsdAogIGlmIChldmVudC5maW5nZXJwcmludCAmJiAhZXZlbnQuZmluZ2VycHJpbnQubGVuZ3RoKSB7CiAgICBkZWxldGUgZXZlbnQuZmluZ2VycHJpbnQ7CiAgfQp9CgovKioKICogRGVmYXVsdCB2YWx1ZSBmb3IgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuCiAqLwpjb25zdCBERUZBVUxUX01BWF9CUkVBRENSVU1CUyA9IDEwMDsKCi8qKgogKiBIb2xkcyBhZGRpdGlvbmFsIGV2ZW50IGluZm9ybWF0aW9uLiB7QGxpbmsgU2NvcGUuYXBwbHlUb0V2ZW50fSB3aWxsIGJlCiAqIGNhbGxlZCBieSB0aGUgY2xpZW50IGJlZm9yZSBhbiBldmVudCB3aWxsIGJlIHNlbnQuCiAqLwpjbGFzcyBTY29wZSAgewogIC8qKiBGbGFnIGlmIG5vdGlmeWluZyBpcyBoYXBwZW5pbmcuICovCgogIC8qKiBDYWxsYmFjayBmb3IgY2xpZW50IHRvIHJlY2VpdmUgc2NvcGUgY2hhbmdlcy4gKi8KCiAgLyoqIENhbGxiYWNrIGxpc3QgdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB7QGxpbmsgYXBwbHlUb0V2ZW50fS4gKi8KCiAgLyoqIEFycmF5IG9mIGJyZWFkY3J1bWJzLiAqLwoKICAvKiogVXNlciAqLwoKICAvKiogVGFncyAqLwoKICAvKiogRXh0cmEgKi8KCiAgLyoqIENvbnRleHRzICovCgogIC8qKiBBdHRhY2htZW50cyAqLwoKICAvKiogUHJvcGFnYXRpb24gQ29udGV4dCBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAqLwoKICAvKioKICAgKiBBIHBsYWNlIHRvIHN0YXNoIGRhdGEgd2hpY2ggaXMgbmVlZGVkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIFNESydzIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUgYnV0IHdoaWNoIHNob3VsZG4ndCBnZXQKICAgKiBzZW50IHRvIFNlbnRyeQogICAqLwoKICAvKiogRmluZ2VycHJpbnQgKi8KCiAgLyoqIFNldmVyaXR5ICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCgogIC8qKgogICAqIFRyYW5zYWN0aW9uIE5hbWUKICAgKi8KCiAgLyoqIFNwYW4gKi8KCiAgLyoqIFNlc3Npb24gKi8KCiAgLyoqIFJlcXVlc3QgTW9kZSBTZXNzaW9uIFN0YXR1cyAqLwoKICAvKiogVGhlIGNsaWVudCBvbiB0aGlzIHNjb3BlICovCgogIC8vIE5PVEU6IEFueSBmaWVsZCB3aGljaCBnZXRzIGFkZGVkIGhlcmUgc2hvdWxkIGdldCBhZGRlZCBub3Qgb25seSB0byB0aGUgY29uc3RydWN0b3IgYnV0IGFsc28gdG8gdGhlIGBjbG9uZWAgbWV0aG9kLgoKICAgY29uc3RydWN0b3IoKSB7CiAgICB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzID0gW107CiAgICB0aGlzLl9ldmVudFByb2Nlc3NvcnMgPSBbXTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gW107CiAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOwogICAgdGhpcy5fdXNlciA9IHt9OwogICAgdGhpcy5fdGFncyA9IHt9OwogICAgdGhpcy5fZXh0cmEgPSB7fTsKICAgIHRoaXMuX2NvbnRleHRzID0ge307CiAgICB0aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgPSB7fTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgfQoKICAvKioKICAgKiBJbmhlcml0IHZhbHVlcyBmcm9tIHRoZSBwYXJlbnQgc2NvcGUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzY29wZS5jbG9uZSgpYCBhbmQgYG5ldyBTY29wZSgpYCBpbnN0ZWFkLgogICAqLwogICBzdGF0aWMgY2xvbmUoc2NvcGUpIHsKICAgIHJldHVybiBzY29wZSA/IHNjb3BlLmNsb25lKCkgOiBuZXcgU2NvcGUoKTsKICB9CgogIC8qKgogICAqIENsb25lIHRoaXMgc2NvcGUgaW5zdGFuY2UuCiAgICovCiAgIGNsb25lKCkgewogICAgY29uc3QgbmV3U2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgIG5ld1Njb3BlLl9icmVhZGNydW1icyA9IFsuLi50aGlzLl9icmVhZGNydW1ic107CiAgICBuZXdTY29wZS5fdGFncyA9IHsgLi4udGhpcy5fdGFncyB9OwogICAgbmV3U2NvcGUuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSB9OwogICAgbmV3U2NvcGUuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cyB9OwogICAgbmV3U2NvcGUuX3VzZXIgPSB0aGlzLl91c2VyOwogICAgbmV3U2NvcGUuX2xldmVsID0gdGhpcy5fbGV2ZWw7CiAgICBuZXdTY29wZS5fc3BhbiA9IHRoaXMuX3NwYW47CiAgICBuZXdTY29wZS5fc2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb247CiAgICBuZXdTY29wZS5fdHJhbnNhY3Rpb25OYW1lID0gdGhpcy5fdHJhbnNhY3Rpb25OYW1lOwogICAgbmV3U2NvcGUuX2ZpbmdlcnByaW50ID0gdGhpcy5fZmluZ2VycHJpbnQ7CiAgICBuZXdTY29wZS5fZXZlbnRQcm9jZXNzb3JzID0gWy4uLnRoaXMuX2V2ZW50UHJvY2Vzc29yc107CiAgICBuZXdTY29wZS5fcmVxdWVzdFNlc3Npb24gPSB0aGlzLl9yZXF1ZXN0U2Vzc2lvbjsKICAgIG5ld1Njb3BlLl9hdHRhY2htZW50cyA9IFsuLi50aGlzLl9hdHRhY2htZW50c107CiAgICBuZXdTY29wZS5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhID0geyAuLi50aGlzLl9zZGtQcm9jZXNzaW5nTWV0YWRhdGEgfTsKICAgIG5ld1Njb3BlLl9wcm9wYWdhdGlvbkNvbnRleHQgPSB7IC4uLnRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCB9OwogICAgbmV3U2NvcGUuX2NsaWVudCA9IHRoaXMuX2NsaWVudDsKCiAgICByZXR1cm4gbmV3U2NvcGU7CiAgfQoKICAvKiogVXBkYXRlIHRoZSBjbGllbnQgb24gdGhlIHNjb3BlLiAqLwogICBzZXRDbGllbnQoY2xpZW50KSB7CiAgICB0aGlzLl9jbGllbnQgPSBjbGllbnQ7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGNsaWVudCBhc3NpZ25lZCB0byB0aGlzIHNjb3BlLgogICAqCiAgICogSXQgaXMgZ2VuZXJhbGx5IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgZ2xvYmFsIGZ1bmN0aW9uIGBTZW50cnkuZ2V0Q2xpZW50KClgIGluc3RlYWQsIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCiAgICovCiAgIGdldENsaWVudCgpIHsKICAgIHJldHVybiB0aGlzLl9jbGllbnQ7CiAgfQoKICAvKioKICAgKiBBZGQgaW50ZXJuYWwgb24gY2hhbmdlIGxpc3RlbmVyLiBVc2VkIGZvciBzdWIgU0RLcyB0aGF0IG5lZWQgdG8gc3RvcmUgdGhlIHNjb3BlLgogICAqIEBoaWRkZW4KICAgKi8KICAgYWRkU2NvcGVMaXN0ZW5lcihjYWxsYmFjaykgewogICAgdGhpcy5fc2NvcGVMaXN0ZW5lcnMucHVzaChjYWxsYmFjayk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBhZGRFdmVudFByb2Nlc3NvcihjYWxsYmFjaykgewogICAgdGhpcy5fZXZlbnRQcm9jZXNzb3JzLnB1c2goY2FsbGJhY2spOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRVc2VyKHVzZXIpIHsKICAgIC8vIElmIG51bGwgaXMgcGFzc2VkIHdlIHdhbnQgdG8gdW5zZXQgZXZlcnl0aGluZywgYnV0IHN0aWxsIGRlZmluZSBrZXlzLAogICAgLy8gc28gdGhhdCBsYXRlciBkb3duIGluIHRoZSBwaXBlbGluZSBhbnkgZXhpc3RpbmcgdmFsdWVzIGFyZSBjbGVhcmVkLgogICAgdGhpcy5fdXNlciA9IHVzZXIgfHwgewogICAgICBlbWFpbDogdW5kZWZpbmVkLAogICAgICBpZDogdW5kZWZpbmVkLAogICAgICBpcF9hZGRyZXNzOiB1bmRlZmluZWQsCiAgICAgIHNlZ21lbnQ6IHVuZGVmaW5lZCwKICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgIH07CgogICAgaWYgKHRoaXMuX3Nlc3Npb24pIHsKICAgICAgdXBkYXRlU2Vzc2lvbih0aGlzLl9zZXNzaW9uLCB7IHVzZXIgfSk7CiAgICB9CgogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0VXNlcigpIHsKICAgIHJldHVybiB0aGlzLl91c2VyOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UmVxdWVzdFNlc3Npb24oKSB7CiAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlc3Npb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRSZXF1ZXN0U2Vzc2lvbihyZXF1ZXN0U2Vzc2lvbikgewogICAgdGhpcy5fcmVxdWVzdFNlc3Npb24gPSByZXF1ZXN0U2Vzc2lvbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgc2V0VGFncyh0YWdzKSB7CiAgICB0aGlzLl90YWdzID0gewogICAgICAuLi50aGlzLl90YWdzLAogICAgICAuLi50YWdzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldFRhZyhrZXksIHZhbHVlKSB7CiAgICB0aGlzLl90YWdzID0geyAuLi50aGlzLl90YWdzLCBba2V5XTogdmFsdWUgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIHRoaXMuX2V4dHJhID0gewogICAgICAuLi50aGlzLl9leHRyYSwKICAgICAgLi4uZXh0cmFzLAogICAgfTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgW2tleV06IGV4dHJhIH07CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRGaW5nZXJwcmludChmaW5nZXJwcmludCkgewogICAgdGhpcy5fZmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIHNldExldmVsKAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICApIHsKICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBuYW1lIG9uIHRoZSBzY29wZSBmb3IgZnV0dXJlIGV2ZW50cy4KICAgKi8KICAgc2V0VHJhbnNhY3Rpb25OYW1lKG5hbWUpIHsKICAgIHRoaXMuX3RyYW5zYWN0aW9uTmFtZSA9IG5hbWU7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRDb250ZXh0KGtleSwgY29udGV4dCkgewogICAgaWYgKGNvbnRleHQgPT09IG51bGwpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZQogICAgICBkZWxldGUgdGhpcy5fY29udGV4dHNba2V5XTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX2NvbnRleHRzW2tleV0gPSBjb250ZXh0OwogICAgfQoKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFNldHMgdGhlIFNwYW4gb24gdGhlIHNjb3BlLgogICAqIEBwYXJhbSBzcGFuIFNwYW4KICAgKiBAZGVwcmVjYXRlZCBJbnN0ZWFkIG9mIHNldHRpbmcgYSBzcGFuIG9uIGEgc2NvcGUsIHVzZSBgc3RhcnRTcGFuKClgL2BzdGFydFNwYW5NYW51YWwoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0U3BhbihzcGFuKSB7CiAgICB0aGlzLl9zcGFuID0gc3BhbjsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBTcGFuYCBpZiB0aGVyZSBpcyBvbmUuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRBY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNwYW4oKSB7CiAgICByZXR1cm4gdGhpcy5fc3BhbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgdGhlIGBUcmFuc2FjdGlvbmAgYXR0YWNoZWQgdG8gdGhlIHNjb3BlIChpZiB0aGVyZSBpcyBvbmUpLgogICAqIEBkZXByZWNhdGVkIFlvdSBzaG91bGQgbm90IHJlbHkgb24gdGhlIHRyYW5zYWN0aW9uLCBidXQganVzdCB1c2UgYHN0YXJ0U3BhbigpYCBBUElzIGluc3RlYWQuCiAgICovCiAgIGdldFRyYW5zYWN0aW9uKCkgewogICAgLy8gT2Z0ZW4sIHRoaXMgc3BhbiAoaWYgaXQgZXhpc3RzIGF0IGFsbCkgd2lsbCBiZSBhIHRyYW5zYWN0aW9uLCBidXQgaXQncyBub3QgZ3VhcmFudGVlZCB0byBiZS4gUmVnYXJkbGVzcywgaXQgd2lsbAogICAgLy8gaGF2ZSBhIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseS1hY3RpdmUgdHJhbnNhY3Rpb24uCiAgICBjb25zdCBzcGFuID0gdGhpcy5fc3BhbjsKICAgIC8vIENhbm5vdCByZXBsYWNlIHdpdGggZ2V0Um9vdFNwYW4gYmVjYXVzZSBnZXRSb290U3BhbiByZXR1cm5zIGEgc3Bhbiwgbm90IGEgdHJhbnNhY3Rpb24KICAgIC8vIEFsc28sIHRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBhbnl3YXkuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHJldHVybiBzcGFuICYmIHNwYW4udHJhbnNhY3Rpb247CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRTZXNzaW9uKHNlc3Npb24pIHsKICAgIGlmICghc2Vzc2lvbikgewogICAgICBkZWxldGUgdGhpcy5fc2Vzc2lvbjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuX3Nlc3Npb24gPSBzZXNzaW9uOwogICAgfQogICAgdGhpcy5fbm90aWZ5U2NvcGVMaXN0ZW5lcnMoKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0U2Vzc2lvbigpIHsKICAgIHJldHVybiB0aGlzLl9zZXNzaW9uOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgdXBkYXRlKGNhcHR1cmVDb250ZXh0KSB7CiAgICBpZiAoIWNhcHR1cmVDb250ZXh0KSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IHNjb3BlVG9NZXJnZSA9IHR5cGVvZiBjYXB0dXJlQ29udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGNhcHR1cmVDb250ZXh0KHRoaXMpIDogY2FwdHVyZUNvbnRleHQ7CgogICAgaWYgKHNjb3BlVG9NZXJnZSBpbnN0YW5jZW9mIFNjb3BlKSB7CiAgICAgIGNvbnN0IHNjb3BlRGF0YSA9IHNjb3BlVG9NZXJnZS5nZXRTY29wZURhdGEoKTsKCiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlRGF0YS50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVEYXRhLmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVEYXRhLmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZURhdGEudXNlciAmJiBPYmplY3Qua2V5cyhzY29wZURhdGEudXNlcikubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5fdXNlciA9IHNjb3BlRGF0YS51c2VyOwogICAgICB9CiAgICAgIGlmIChzY29wZURhdGEubGV2ZWwpIHsKICAgICAgICB0aGlzLl9sZXZlbCA9IHNjb3BlRGF0YS5sZXZlbDsKICAgICAgfQogICAgICBpZiAoc2NvcGVEYXRhLmZpbmdlcnByaW50Lmxlbmd0aCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVEYXRhLmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZVRvTWVyZ2UuZ2V0UmVxdWVzdFNlc3Npb24oKSkgewogICAgICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gc2NvcGVUb01lcmdlLmdldFJlcXVlc3RTZXNzaW9uKCk7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlRGF0YS5wcm9wYWdhdGlvbkNvbnRleHQpIHsKICAgICAgICB0aGlzLl9wcm9wYWdhdGlvbkNvbnRleHQgPSBzY29wZURhdGEucHJvcGFnYXRpb25Db250ZXh0OwogICAgICB9CiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoc2NvcGVUb01lcmdlKSkgewogICAgICBjb25zdCBzY29wZUNvbnRleHQgPSBjYXB0dXJlQ29udGV4dCA7CiAgICAgIHRoaXMuX3RhZ3MgPSB7IC4uLnRoaXMuX3RhZ3MsIC4uLnNjb3BlQ29udGV4dC50YWdzIH07CiAgICAgIHRoaXMuX2V4dHJhID0geyAuLi50aGlzLl9leHRyYSwgLi4uc2NvcGVDb250ZXh0LmV4dHJhIH07CiAgICAgIHRoaXMuX2NvbnRleHRzID0geyAuLi50aGlzLl9jb250ZXh0cywgLi4uc2NvcGVDb250ZXh0LmNvbnRleHRzIH07CiAgICAgIGlmIChzY29wZUNvbnRleHQudXNlcikgewogICAgICAgIHRoaXMuX3VzZXIgPSBzY29wZUNvbnRleHQudXNlcjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LmxldmVsKSB7CiAgICAgICAgdGhpcy5fbGV2ZWwgPSBzY29wZUNvbnRleHQubGV2ZWw7CiAgICAgIH0KICAgICAgaWYgKHNjb3BlQ29udGV4dC5maW5nZXJwcmludCkgewogICAgICAgIHRoaXMuX2ZpbmdlcnByaW50ID0gc2NvcGVDb250ZXh0LmZpbmdlcnByaW50OwogICAgICB9CiAgICAgIGlmIChzY29wZUNvbnRleHQucmVxdWVzdFNlc3Npb24pIHsKICAgICAgICB0aGlzLl9yZXF1ZXN0U2Vzc2lvbiA9IHNjb3BlQ29udGV4dC5yZXF1ZXN0U2Vzc2lvbjsKICAgICAgfQogICAgICBpZiAoc2NvcGVDb250ZXh0LnByb3BhZ2F0aW9uQ29udGV4dCkgewogICAgICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IHNjb3BlQ29udGV4dC5wcm9wYWdhdGlvbkNvbnRleHQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGNsZWFyKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX3RhZ3MgPSB7fTsKICAgIHRoaXMuX2V4dHJhID0ge307CiAgICB0aGlzLl91c2VyID0ge307CiAgICB0aGlzLl9jb250ZXh0cyA9IHt9OwogICAgdGhpcy5fbGV2ZWwgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl90cmFuc2FjdGlvbk5hbWUgPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9maW5nZXJwcmludCA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3JlcXVlc3RTZXNzaW9uID0gdW5kZWZpbmVkOwogICAgdGhpcy5fc3BhbiA9IHVuZGVmaW5lZDsKICAgIHRoaXMuX3Nlc3Npb24gPSB1bmRlZmluZWQ7CiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwogICAgdGhpcy5fYXR0YWNobWVudHMgPSBbXTsKICAgIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dCA9IGdlbmVyYXRlUHJvcGFnYXRpb25Db250ZXh0KCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEJyZWFkY3J1bWIoYnJlYWRjcnVtYiwgbWF4QnJlYWRjcnVtYnMpIHsKICAgIGNvbnN0IG1heENydW1icyA9IHR5cGVvZiBtYXhCcmVhZGNydW1icyA9PT0gJ251bWJlcicgPyBtYXhCcmVhZGNydW1icyA6IERFRkFVTFRfTUFYX0JSRUFEQ1JVTUJTOwoKICAgIC8vIE5vIGRhdGEgaGFzIGJlZW4gY2hhbmdlZCwgc28gZG9uJ3Qgbm90aWZ5IHNjb3BlIGxpc3RlbmVycwogICAgaWYgKG1heENydW1icyA8PSAwKSB7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQoKICAgIGNvbnN0IG1lcmdlZEJyZWFkY3J1bWIgPSB7CiAgICAgIHRpbWVzdGFtcDogZGF0ZVRpbWVzdGFtcEluU2Vjb25kcygpLAogICAgICAuLi5icmVhZGNydW1iLAogICAgfTsKCiAgICBjb25zdCBicmVhZGNydW1icyA9IHRoaXMuX2JyZWFkY3J1bWJzOwogICAgYnJlYWRjcnVtYnMucHVzaChtZXJnZWRCcmVhZGNydW1iKTsKICAgIHRoaXMuX2JyZWFkY3J1bWJzID0gYnJlYWRjcnVtYnMubGVuZ3RoID4gbWF4Q3J1bWJzID8gYnJlYWRjcnVtYnMuc2xpY2UoLW1heENydW1icykgOiBicmVhZGNydW1iczsKCiAgICB0aGlzLl9ub3RpZnlTY29wZUxpc3RlbmVycygpOwoKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0TGFzdEJyZWFkY3J1bWIoKSB7CiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnNbdGhpcy5fYnJlYWRjcnVtYnMubGVuZ3RoIC0gMV07CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBjbGVhckJyZWFkY3J1bWJzKCkgewogICAgdGhpcy5fYnJlYWRjcnVtYnMgPSBbXTsKICAgIHRoaXMuX25vdGlmeVNjb3BlTGlzdGVuZXJzKCk7CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgIGFkZEF0dGFjaG1lbnQoYXR0YWNobWVudCkgewogICAgdGhpcy5fYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYGdldFNjb3BlRGF0YSgpYCBpbnN0ZWFkLgogICAqLwogICBnZXRBdHRhY2htZW50cygpIHsKICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNjb3BlRGF0YSgpOwoKICAgIHJldHVybiBkYXRhLmF0dGFjaG1lbnRzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgY2xlYXJBdHRhY2htZW50cygpIHsKICAgIHRoaXMuX2F0dGFjaG1lbnRzID0gW107CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8qKiBAaW5oZXJpdERvYyAqLwogICBnZXRTY29wZURhdGEoKSB7CiAgICBjb25zdCB7CiAgICAgIF9icmVhZGNydW1icywKICAgICAgX2F0dGFjaG1lbnRzLAogICAgICBfY29udGV4dHMsCiAgICAgIF90YWdzLAogICAgICBfZXh0cmEsCiAgICAgIF91c2VyLAogICAgICBfbGV2ZWwsCiAgICAgIF9maW5nZXJwcmludCwKICAgICAgX2V2ZW50UHJvY2Vzc29ycywKICAgICAgX3Byb3BhZ2F0aW9uQ29udGV4dCwKICAgICAgX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSwKICAgICAgX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgX3NwYW4sCiAgICB9ID0gdGhpczsKCiAgICByZXR1cm4gewogICAgICBicmVhZGNydW1iczogX2JyZWFkY3J1bWJzLAogICAgICBhdHRhY2htZW50czogX2F0dGFjaG1lbnRzLAogICAgICBjb250ZXh0czogX2NvbnRleHRzLAogICAgICB0YWdzOiBfdGFncywKICAgICAgZXh0cmE6IF9leHRyYSwKICAgICAgdXNlcjogX3VzZXIsCiAgICAgIGxldmVsOiBfbGV2ZWwsCiAgICAgIGZpbmdlcnByaW50OiBfZmluZ2VycHJpbnQgfHwgW10sCiAgICAgIGV2ZW50UHJvY2Vzc29yczogX2V2ZW50UHJvY2Vzc29ycywKICAgICAgcHJvcGFnYXRpb25Db250ZXh0OiBfcHJvcGFnYXRpb25Db250ZXh0LAogICAgICBzZGtQcm9jZXNzaW5nTWV0YWRhdGE6IF9zZGtQcm9jZXNzaW5nTWV0YWRhdGEsCiAgICAgIHRyYW5zYWN0aW9uTmFtZTogX3RyYW5zYWN0aW9uTmFtZSwKICAgICAgc3BhbjogX3NwYW4sCiAgICB9OwogIH0KCiAgLyoqCiAgICogQXBwbGllcyBkYXRhIGZyb20gdGhlIHNjb3BlIHRvIHRoZSBldmVudCBhbmQgcnVucyBhbGwgZXZlbnQgcHJvY2Vzc29ycyBvbiBpdC4KICAgKgogICAqIEBwYXJhbSBldmVudCBFdmVudAogICAqIEBwYXJhbSBoaW50IE9iamVjdCBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiwgZm9yIHVzZSBieSB0aGUgZXZlbnQgcHJvY2Vzc29ycy4KICAgKiBAaGlkZGVuCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBhcHBseVNjb3BlRGF0YVRvRXZlbnQoKWAgZGlyZWN0bHkKICAgKi8KICAgYXBwbHlUb0V2ZW50KAogICAgZXZlbnQsCiAgICBoaW50ID0ge30sCiAgICBhZGRpdGlvbmFsRXZlbnRQcm9jZXNzb3JzID0gW10sCiAgKSB7CiAgICBhcHBseVNjb3BlRGF0YVRvRXZlbnQoZXZlbnQsIHRoaXMuZ2V0U2NvcGVEYXRhKCkpOwoKICAgIC8vIFRPRE8gKHY4KTogVXBkYXRlIHRoaXMgb3JkZXIgdG8gYmU6IEdsb2JhbCA+IENsaWVudCA+IFNjb3BlCiAgICBjb25zdCBldmVudFByb2Nlc3NvcnMgPSBbCiAgICAgIC4uLmFkZGl0aW9uYWxFdmVudFByb2Nlc3NvcnMsCiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAuLi5nZXRHbG9iYWxFdmVudFByb2Nlc3NvcnMoKSwKICAgICAgLi4udGhpcy5fZXZlbnRQcm9jZXNzb3JzLAogICAgXTsKCiAgICByZXR1cm4gbm90aWZ5RXZlbnRQcm9jZXNzb3JzKGV2ZW50UHJvY2Vzc29ycywgZXZlbnQsIGhpbnQpOwogIH0KCiAgLyoqCiAgICogQWRkIGRhdGEgd2hpY2ggd2lsbCBiZSBhY2Nlc3NpYmxlIGR1cmluZyBldmVudCBwcm9jZXNzaW5nIGJ1dCB3b24ndCBnZXQgc2VudCB0byBTZW50cnkKICAgKi8KICAgc2V0U0RLUHJvY2Vzc2luZ01ldGFkYXRhKG5ld0RhdGEpIHsKICAgIHRoaXMuX3Nka1Byb2Nlc3NpbmdNZXRhZGF0YSA9IHsgLi4udGhpcy5fc2RrUHJvY2Vzc2luZ01ldGFkYXRhLCAuLi5uZXdEYXRhIH07CgogICAgcmV0dXJuIHRoaXM7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqLwogICBzZXRQcm9wYWdhdGlvbkNvbnRleHQoY29udGV4dCkgewogICAgdGhpcy5fcHJvcGFnYXRpb25Db250ZXh0ID0gY29udGV4dDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKi8KICAgZ2V0UHJvcGFnYXRpb25Db250ZXh0KCkgewogICAgcmV0dXJuIHRoaXMuX3Byb3BhZ2F0aW9uQ29udGV4dDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYW4gZXhjZXB0aW9uIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIGV4Y2VwdGlvbiBUaGUgZXhjZXB0aW9uIHRvIGNhcHR1cmUuCiAgICogQHBhcmFtIGhpbnQgT3B0aW5hbCBhZGRpdGlvbmFsIGRhdGEgdG8gYXR0YWNoIHRvIHRoZSBTZW50cnkgZXZlbnQuCiAgICogQHJldHVybnMgdGhlIGlkIG9mIHRoZSBjYXB0dXJlZCBTZW50cnkgZXZlbnQuCiAgICovCiAgIGNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CgogICAgaWYgKCF0aGlzLl9jbGllbnQpIHsKICAgICAgbG9nZ2VyLndhcm4oJ05vIGNsaWVudCBjb25maWd1cmVkIG9uIHNjb3BlIC0gd2lsbCBub3QgY2FwdHVyZSBleGNlcHRpb24hJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcignU2VudHJ5IHN5bnRoZXRpY0V4Y2VwdGlvbicpOwoKICAgIHRoaXMuX2NsaWVudC5jYXB0dXJlRXhjZXB0aW9uKAogICAgICBleGNlcHRpb24sCiAgICAgIHsKICAgICAgICBvcmlnaW5hbEV4Y2VwdGlvbjogZXhjZXB0aW9uLAogICAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgICAuLi5oaW50LAogICAgICAgIGV2ZW50X2lkOiBldmVudElkLAogICAgICB9LAogICAgICB0aGlzLAogICAgKTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIENhcHR1cmUgYSBtZXNzYWdlIGZvciB0aGlzIHNjb3BlLgogICAqCiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gY2FwdHVyZS4KICAgKiBAcGFyYW0gbGV2ZWwgQW4gb3B0aW9uYWwgc2V2ZXJpdHkgbGV2ZWwgdG8gcmVwb3J0IHRoZSBtZXNzYWdlIHdpdGguCiAgICogQHBhcmFtIGhpbnQgT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhIHRvIGF0dGFjaCB0byB0aGUgU2VudHJ5IGV2ZW50LgogICAqIEByZXR1cm5zIHRoZSBpZCBvZiB0aGUgY2FwdHVyZWQgbWVzc2FnZS4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIG1lc3NhZ2UhJyk7CiAgICAgIHJldHVybiBldmVudElkOwogICAgfQoKICAgIGNvbnN0IHN5bnRoZXRpY0V4Y2VwdGlvbiA9IG5ldyBFcnJvcihtZXNzYWdlKTsKCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZU1lc3NhZ2UoCiAgICAgIG1lc3NhZ2UsCiAgICAgIGxldmVsLAogICAgICB7CiAgICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgICAgc3ludGhldGljRXhjZXB0aW9uLAogICAgICAgIC4uLmhpbnQsCiAgICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICAgIH0sCiAgICAgIHRoaXMsCiAgICApOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogQ2FwdHVyZXMgYSBtYW51YWxseSBjcmVhdGVkIGV2ZW50IGZvciB0aGlzIHNjb3BlIGFuZCBzZW5kcyBpdCB0byBTZW50cnkuCiAgICoKICAgKiBAcGFyYW0gZXhjZXB0aW9uIFRoZSBldmVudCB0byBjYXB0dXJlLgogICAqIEBwYXJhbSBoaW50IE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YSB0byBhdHRhY2ggdG8gdGhlIFNlbnRyeSBldmVudC4KICAgKiBAcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNhcHR1cmVkIGV2ZW50LgogICAqLwogICBjYXB0dXJlRXZlbnQoZXZlbnQsIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKTsKCiAgICBpZiAoIXRoaXMuX2NsaWVudCkgewogICAgICBsb2dnZXIud2FybignTm8gY2xpZW50IGNvbmZpZ3VyZWQgb24gc2NvcGUgLSB3aWxsIG5vdCBjYXB0dXJlIGV2ZW50IScpOwogICAgICByZXR1cm4gZXZlbnRJZDsKICAgIH0KCiAgICB0aGlzLl9jbGllbnQuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0sIHRoaXMpOwoKICAgIHJldHVybiBldmVudElkOwogIH0KCiAgLyoqCiAgICogVGhpcyB3aWxsIGJlIGNhbGxlZCBvbiBldmVyeSBzZXQgY2FsbC4KICAgKi8KICAgX25vdGlmeVNjb3BlTGlzdGVuZXJzKCkgewogICAgLy8gV2UgbmVlZCB0aGlzIGNoZWNrIGZvciB0aGlzLl9ub3RpZnlpbmdMaXN0ZW5lcnMgdG8gYmUgYWJsZSB0byB3b3JrIG9uIHNjb3BlIGR1cmluZyB1cGRhdGVzCiAgICAvLyBJZiB0aGlzIGNoZWNrIGlzIG5vdCBoZXJlIHdlJ2xsIHByb2R1Y2UgZW5kbGVzcyByZWN1cnNpb24gd2hlbiBzb21ldGhpbmcgaXMgZG9uZSB3aXRoIHRoZSBzY29wZQogICAgLy8gZHVyaW5nIHRoZSBjYWxsYmFjay4KICAgIGlmICghdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzKSB7CiAgICAgIHRoaXMuX25vdGlmeWluZ0xpc3RlbmVycyA9IHRydWU7CiAgICAgIHRoaXMuX3Njb3BlTGlzdGVuZXJzLmZvckVhY2goY2FsbGJhY2sgPT4gewogICAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgICB9KTsKICAgICAgdGhpcy5fbm90aWZ5aW5nTGlzdGVuZXJzID0gZmFsc2U7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBnZW5lcmF0ZVByb3BhZ2F0aW9uQ29udGV4dCgpIHsKICByZXR1cm4gewogICAgdHJhY2VJZDogdXVpZDQoKSwKICAgIHNwYW5JZDogdXVpZDQoKS5zdWJzdHJpbmcoMTYpLAogIH07Cn0KCmNvbnN0IFNES19WRVJTSU9OID0gJzcuMTIwLjEnOwoKLyoqCiAqIEFQSSBjb21wYXRpYmlsaXR5IHZlcnNpb24gb2YgdGhpcyBodWIuCiAqCiAqIFdBUk5JTkc6IFRoaXMgbnVtYmVyIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB3aGVuIHRoZSBnbG9iYWwgaW50ZXJmYWNlCiAqIGNoYW5nZXMgYW5kIG5ldyBtZXRob2RzIGFyZSBpbnRyb2R1Y2VkLgogKgogKiBAaGlkZGVuCiAqLwpjb25zdCBBUElfVkVSU0lPTiA9IHBhcnNlRmxvYXQoU0RLX1ZFUlNJT04pOwoKLyoqCiAqIERlZmF1bHQgbWF4aW11bSBudW1iZXIgb2YgYnJlYWRjcnVtYnMgYWRkZWQgdG8gYW4gZXZlbnQuIENhbiBiZSBvdmVyd3JpdHRlbgogKiB3aXRoIHtAbGluayBPcHRpb25zLm1heEJyZWFkY3J1bWJzfS4KICovCmNvbnN0IERFRkFVTFRfQlJFQURDUlVNQlMgPSAxMDA7CgovKioKICogQGRlcHJlY2F0ZWQgVGhlIGBIdWJgIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDggb2YgdGhlIFNESyBpbiBmYXZvdXIgb2YgYFNjb3BlYCBhbmQgYENsaWVudGAgb2JqZWN0cy4KICoKICogSWYgeW91IHByZXZpb3VzbHkgdXNlZCB0aGUgYEh1YmAgY2xhc3MgZGlyZWN0bHksIHJlcGxhY2UgaXQgd2l0aCBgU2NvcGVgIGFuZCBgQ2xpZW50YCBvYmplY3RzLiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNdWx0aXBsZSBTZW50cnkgSW5zdGFuY2VzXShodHRwczovL2RvY3Muc2VudHJ5LmlvL3BsYXRmb3Jtcy9qYXZhc2NyaXB0L2Jlc3QtcHJhY3RpY2VzL211bHRpcGxlLXNlbnRyeS1pbnN0YW5jZXMvKQogKiAtIFtCcm93c2VyIEV4dGVuc2lvbnNdKGh0dHBzOi8vZG9jcy5zZW50cnkuaW8vcGxhdGZvcm1zL2phdmFzY3JpcHQvYmVzdC1wcmFjdGljZXMvYnJvd3Nlci1leHRlbnNpb25zLykKICoKICogU29tZSBvZiBvdXIgQVBJcyBhcmUgdHlwZWQgd2l0aCB0aGUgSHViIGNsYXNzIGluc3RlYWQgb2YgdGhlIGludGVyZmFjZSAoZS5nLiBgZ2V0Q3VycmVudEh1YmApLiBNb3N0IG9mIHRoZW0gYXJlIGRlcHJlY2F0ZWQKICogdGhlbXNlbHZlcyBhbmQgd2lsbCBhbHNvIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiA4LiBNb3JlIGluZm9ybWF0aW9uOgogKiAtIFtNaWdyYXRpb24gR3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvYmxvYi9kZXZlbG9wL01JR1JBVElPTi5tZCNkZXByZWNhdGUtaHViKQogKi8KLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmNsYXNzIEh1YiAgewogIC8qKiBJcyBhIHtAbGluayBMYXllcn1bXSBjb250YWluaW5nIHRoZSBjbGllbnQgYW5kIHNjb3BlICovCgogIC8qKiBDb250YWlucyB0aGUgbGFzdCBldmVudCBpZCBvZiBhIGNhcHR1cmVkIGV2ZW50LiAgKi8KCiAgLyoqCiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgaHViLCB3aWxsIHB1c2ggb25lIHtAbGluayBMYXllcn0gaW50byB0aGUKICAgKiBpbnRlcm5hbCBzdGFjayBvbiBjcmVhdGlvbi4KICAgKgogICAqIEBwYXJhbSBjbGllbnQgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gc2NvcGUgYm91bmQgdG8gdGhlIGh1Yi4KICAgKiBAcGFyYW0gdmVyc2lvbiBudW1iZXIsIGhpZ2hlciBudW1iZXIgbWVhbnMgaGlnaGVyIHByaW9yaXR5LgogICAqCiAgICogQGRlcHJlY2F0ZWQgSW5zdGFudGlhdGlvbiBvZiBIdWIgb2JqZWN0cyBpcyBkZXByZWNhdGVkIGFuZCB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gOCBvZiB0aGUgU0RLLgogICAqCiAgICogSWYgeW91IGFyZSBjdXJyZW50bHkgdXNpbmcgdGhlIEh1YiBmb3IgbXVsdGktY2xpZW50IHVzZSBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgaHViID0gbmV3IEh1YigpOwogICAqIGh1Yi5iaW5kQ2xpZW50KGNsaWVudCk7CiAgICogbWFrZU1haW4oaHViKQogICAqIGBgYAogICAqCiAgICogaW5zdGVhZCBpbml0aWFsaXplIHRoZSBjbGllbnQgYXMgZm9sbG93czoKICAgKgogICAqIGBgYAogICAqIC8vIE5FVwogICAqIFNlbnRyeS53aXRoSXNvbGF0aW9uU2NvcGUoKCkgPT4gewogICAqICAgIFNlbnRyeS5zZXRDdXJyZW50Q2xpZW50KGNsaWVudCk7CiAgICogICAgY2xpZW50LmluaXQoKTsKICAgKiB9KTsKICAgKiBgYGAKICAgKgogICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIEh1YiB0byBjYXB0dXJlIGV2ZW50cyBsaWtlIHNvOgogICAqCiAgICogYGBgCiAgICogLy8gT0xECiAgICogY29uc3QgY2xpZW50ID0gbmV3IENsaWVudCgpOwogICAqIGNvbnN0IGh1YiA9IG5ldyBIdWIoY2xpZW50KTsKICAgKiBodWIuY2FwdHVyZUV4Y2VwdGlvbigpCiAgICogYGBgCiAgICoKICAgKiBpbnN0ZWFkIGNhcHR1cmUgaXNvbGF0ZWQgZXZlbnRzIGFzIGZvbGxvd3M6CiAgICoKICAgKiBgYGAKICAgKiAvLyBORVcKICAgKiBjb25zdCBjbGllbnQgPSBuZXcgQ2xpZW50KCk7CiAgICogY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoKTsKICAgKiBzY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgKiBzY29wZS5jYXB0dXJlRXhjZXB0aW9uKCk7CiAgICogYGBgCiAgICovCiAgIGNvbnN0cnVjdG9yKAogICAgY2xpZW50LAogICAgc2NvcGUsCiAgICBpc29sYXRpb25TY29wZSwKICAgICAgX3ZlcnNpb24gPSBBUElfVkVSU0lPTiwKICApIHt0aGlzLl92ZXJzaW9uID0gX3ZlcnNpb247CiAgICBsZXQgYXNzaWduZWRTY29wZTsKICAgIGlmICghc2NvcGUpIHsKICAgICAgYXNzaWduZWRTY29wZSA9IG5ldyBTY29wZSgpOwogICAgICBhc3NpZ25lZFNjb3BlLnNldENsaWVudChjbGllbnQpOwogICAgfSBlbHNlIHsKICAgICAgYXNzaWduZWRTY29wZSA9IHNjb3BlOwogICAgfQoKICAgIGxldCBhc3NpZ25lZElzb2xhdGlvblNjb3BlOwogICAgaWYgKCFpc29sYXRpb25TY29wZSkgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gbmV3IFNjb3BlKCk7CiAgICAgIGFzc2lnbmVkSXNvbGF0aW9uU2NvcGUuc2V0Q2xpZW50KGNsaWVudCk7CiAgICB9IGVsc2UgewogICAgICBhc3NpZ25lZElzb2xhdGlvblNjb3BlID0gaXNvbGF0aW9uU2NvcGU7CiAgICB9CgogICAgdGhpcy5fc3RhY2sgPSBbeyBzY29wZTogYXNzaWduZWRTY29wZSB9XTsKCiAgICBpZiAoY2xpZW50KSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICB0aGlzLmJpbmRDbGllbnQoY2xpZW50KTsKICAgIH0KCiAgICB0aGlzLl9pc29sYXRpb25TY29wZSA9IGFzc2lnbmVkSXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBDaGVja3MgaWYgdGhpcyBodWIncyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gdGhlIGdpdmVuIHZlcnNpb24uCiAgICoKICAgKiBAcGFyYW0gdmVyc2lvbiBBIHZlcnNpb24gbnVtYmVyIHRvIGNvbXBhcmUgdG8uCiAgICogQHJldHVybiBUcnVlIGlmIHRoZSBnaXZlbiB2ZXJzaW9uIGlzIG5ld2VyOyBvdGhlcndpc2UgZmFsc2UuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgaXNPbGRlclRoYW4odmVyc2lvbikgewogICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gPCB2ZXJzaW9uOwogIH0KCiAgLyoqCiAgICogVGhpcyBiaW5kcyB0aGUgZ2l2ZW4gY2xpZW50IHRvIHRoZSBjdXJyZW50IHNjb3BlLgogICAqIEBwYXJhbSBjbGllbnQgQW4gU0RLIGNsaWVudCAoY2xpZW50KSBpbnN0YW5jZS4KICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgaW5pdEFuZEJpbmQoKWAgZGlyZWN0bHksIG9yIGBzZXRDdXJyZW50Q2xpZW50KClgIGFuZC9vciBgY2xpZW50LmluaXQoKWAgaW5zdGVhZC4KICAgKi8KICAgYmluZENsaWVudChjbGllbnQpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgdG9wID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgdG9wLmNsaWVudCA9IGNsaWVudDsKICAgIHRvcC5zY29wZS5zZXRDbGllbnQoY2xpZW50KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKGNsaWVudCAmJiBjbGllbnQuc2V0dXBJbnRlZ3JhdGlvbnMpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIGNsaWVudC5zZXR1cEludGVncmF0aW9ucygpOwogICAgfQogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwdXNoU2NvcGUoKSB7CiAgICAvLyBXZSB3YW50IHRvIGNsb25lIHRoZSBjb250ZW50IG9mIHByZXYgc2NvcGUKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldFNjb3BlKCkuY2xvbmUoKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTdGFjaygpLnB1c2goewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY2xpZW50OiB0aGlzLmdldENsaWVudCgpLAogICAgICBzY29wZSwKICAgIH0pOwogICAgcmV0dXJuIHNjb3BlOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgd2l0aFNjb3BlYCBpbnN0ZWFkLgogICAqLwogICBwb3BTY29wZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgaWYgKHRoaXMuZ2V0U3RhY2soKS5sZW5ndGggPD0gMSkgcmV0dXJuIGZhbHNlOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gISF0aGlzLmdldFN0YWNrKCkucG9wKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkud2l0aFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIHdpdGhTY29wZShjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBzY29wZSA9IHRoaXMucHVzaFNjb3BlKCk7CgogICAgbGV0IG1heWJlUHJvbWlzZVJlc3VsdDsKICAgIHRyeSB7CiAgICAgIG1heWJlUHJvbWlzZVJlc3VsdCA9IGNhbGxiYWNrKHNjb3BlKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgdGhyb3cgZTsKICAgIH0KCiAgICBpZiAoaXNUaGVuYWJsZShtYXliZVByb21pc2VSZXN1bHQpKSB7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpc1RoZW5hYmxlIHJldHVybnMgdGhlIHdyb25nIHR5cGUKICAgICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdC50aGVuKAogICAgICAgIHJlcyA9PiB7CiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgICAgIHRoaXMucG9wU2NvcGUoKTsKICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfSwKICAgICAgICBlID0+IHsKICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICAgICAgdGhpcy5wb3BTY29wZSgpOwogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9LAogICAgICApOwogICAgfQoKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5wb3BTY29wZSgpOwogICAgcmV0dXJuIG1heWJlUHJvbWlzZVJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5nZXRDbGllbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0Q2xpZW50KCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLmNsaWVudCA7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBvZiB0aGUgdG9wIHN0YWNrLgogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0Q3VycmVudFNjb3BlKClgIGluc3RlYWQuCiAgICovCiAgIGdldFNjb3BlKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICByZXR1cm4gdGhpcy5nZXRTdGFja1RvcCgpLnNjb3BlOwogIH0KCiAgLyoqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuZ2V0SXNvbGF0aW9uU2NvcGUoKWAgaW5zdGVhZC4KICAgKi8KICAgZ2V0SXNvbGF0aW9uU2NvcGUoKSB7CiAgICByZXR1cm4gdGhpcy5faXNvbGF0aW9uU2NvcGU7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBzY29wZSBzdGFjayBmb3IgZG9tYWlucyBvciB0aGUgcHJvY2Vzcy4KICAgKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB2OC4KICAgKi8KICAgZ2V0U3RhY2soKSB7CiAgICByZXR1cm4gdGhpcy5fc3RhY2s7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSB0b3Btb3N0IHNjb3BlIGxheWVyIGluIHRoZSBvcmRlciBkb21haW4gPiBsb2NhbCA+IHByb2Nlc3MuCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGdldFN0YWNrVG9wKCkgewogICAgcmV0dXJuIHRoaXMuX3N0YWNrW3RoaXMuX3N0YWNrLmxlbmd0aCAtIDFdOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV4Y2VwdGlvbihleGNlcHRpb24sIGhpbnQpIHsKICAgIGNvbnN0IGV2ZW50SWQgPSAodGhpcy5fbGFzdEV2ZW50SWQgPSBoaW50ICYmIGhpbnQuZXZlbnRfaWQgPyBoaW50LmV2ZW50X2lkIDogdXVpZDQoKSk7CiAgICBjb25zdCBzeW50aGV0aWNFeGNlcHRpb24gPSBuZXcgRXJyb3IoJ1NlbnRyeSBzeW50aGV0aWNFeGNlcHRpb24nKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLmNhcHR1cmVFeGNlcHRpb24oZXhjZXB0aW9uLCB7CiAgICAgIG9yaWdpbmFsRXhjZXB0aW9uOiBleGNlcHRpb24sCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgIGBTZW50cnkuY2FwdHVyZU1lc3NhZ2UoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZU1lc3NhZ2UoCiAgICBtZXNzYWdlLAogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBsZXZlbCwKICAgIGhpbnQsCiAgKSB7CiAgICBjb25zdCBldmVudElkID0gKHRoaXMuX2xhc3RFdmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCkpOwogICAgY29uc3Qgc3ludGhldGljRXhjZXB0aW9uID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZU1lc3NhZ2UobWVzc2FnZSwgbGV2ZWwsIHsKICAgICAgb3JpZ2luYWxFeGNlcHRpb246IG1lc3NhZ2UsCiAgICAgIHN5bnRoZXRpY0V4Y2VwdGlvbiwKICAgICAgLi4uaGludCwKICAgICAgZXZlbnRfaWQ6IGV2ZW50SWQsCiAgICB9KTsKCiAgICByZXR1cm4gZXZlbnRJZDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5jYXB0dXJlRXZlbnQoKWAgaW5zdGVhZC4KICAgKi8KICAgY2FwdHVyZUV2ZW50KGV2ZW50LCBoaW50KSB7CiAgICBjb25zdCBldmVudElkID0gaGludCAmJiBoaW50LmV2ZW50X2lkID8gaGludC5ldmVudF9pZCA6IHV1aWQ0KCk7CiAgICBpZiAoIWV2ZW50LnR5cGUpIHsKICAgICAgdGhpcy5fbGFzdEV2ZW50SWQgPSBldmVudElkOwogICAgfQogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuY2FwdHVyZUV2ZW50KGV2ZW50LCB7IC4uLmhpbnQsIGV2ZW50X2lkOiBldmVudElkIH0pOwogICAgcmV0dXJuIGV2ZW50SWQ7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdjguCiAgICovCiAgIGxhc3RFdmVudElkKCkgewogICAgcmV0dXJuIHRoaXMuX2xhc3RFdmVudElkOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKgogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmFkZEJyZWFkY3J1bWIoKWAgaW5zdGVhZC4KICAgKi8KICAgYWRkQnJlYWRjcnVtYihicmVhZGNydW1iLCBoaW50KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwoKICAgIGlmICghY2xpZW50KSByZXR1cm47CgogICAgY29uc3QgeyBiZWZvcmVCcmVhZGNydW1iID0gbnVsbCwgbWF4QnJlYWRjcnVtYnMgPSBERUZBVUxUX0JSRUFEQ1JVTUJTIH0gPQogICAgICAoY2xpZW50LmdldE9wdGlvbnMgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgaWYgKG1heEJyZWFkY3J1bWJzIDw9IDApIHJldHVybjsKCiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRlVGltZXN0YW1wSW5TZWNvbmRzKCk7CiAgICBjb25zdCBtZXJnZWRCcmVhZGNydW1iID0geyB0aW1lc3RhbXAsIC4uLmJyZWFkY3J1bWIgfTsKICAgIGNvbnN0IGZpbmFsQnJlYWRjcnVtYiA9IGJlZm9yZUJyZWFkY3J1bWIKICAgICAgPyAoY29uc29sZVNhbmRib3goKCkgPT4gYmVmb3JlQnJlYWRjcnVtYihtZXJnZWRCcmVhZGNydW1iLCBoaW50KSkgKQogICAgICA6IG1lcmdlZEJyZWFkY3J1bWI7CgogICAgaWYgKGZpbmFsQnJlYWRjcnVtYiA9PT0gbnVsbCkgcmV0dXJuOwoKICAgIGlmIChjbGllbnQuZW1pdCkgewogICAgICBjbGllbnQuZW1pdCgnYmVmb3JlQWRkQnJlYWRjcnVtYicsIGZpbmFsQnJlYWRjcnVtYiwgaGludCk7CiAgICB9CgogICAgLy8gVE9ETyh2OCk6IEkga25vdyB0aGlzIGNvbW1lbnQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgYmVjYXVzZSB0aGUgaHViIHdpbGwgYmUgZGVwcmVjYXRlZCBidXQgSSBzdGlsbCB3YW50ZWQgdG8KICAgIC8vIHdyaXRlIGl0IGRvd24uIEluIHRoZW9yeSwgd2Ugd291bGQgaGF2ZSB0byBhZGQgdGhlIGJyZWFkY3J1bWJzIHRvIHRoZSBpc29sYXRpb24gc2NvcGUgaGVyZSwgaG93ZXZlciwgdGhhdCB3b3VsZAogICAgLy8gZHVwbGljYXRlIGFsbCBvZiB0aGUgYnJlYWRjcnVtYnMuIFRoZXJlIHdhcyB0aGUgcG9zc2liaWxpdHkgb2YgYWRkaW5nIGJyZWFkY3J1bWJzIHRvIGJvdGgsIHRoZSBpc29sYXRpb24gc2NvcGUKICAgIC8vIGFuZCB0aGUgbm9ybWFsIHNjb3BlLCBhbmQgZGVkdXBsaWNhdGluZyBpdCBkb3duIHRoZSBsaW5lIGluIHRoZSBldmVudCBwcm9jZXNzaW5nIHBpcGVsaW5lLiBIb3dldmVyLCB0aGF0IHdvdWxkCiAgICAvLyBoYXZlIGJlZW4gdmVyeSBmcmFnaWxlLCBiZWNhdXNlIHRoZSBicmVhZGNydW1iIG9iamVjdHMgd291bGQgaGF2ZSBuZWVkZWQgdG8ga2VlcCB0aGVpciBpZGVudGl0eSBhbGwgdGhyb3VnaG91dAogICAgLy8gdGhlIGV2ZW50IHByb2Nlc3NpbmcgcGlwZWxpbmUuCiAgICAvLyBJbiB0aGUgbmV3IGltcGxlbWVudGF0aW9uLCB0aGUgdG9wIGxldmVsIGBTZW50cnkuYWRkQnJlYWRjcnVtYigpYCBzaG91bGQgT05MWSB3cml0ZSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgoKICAgIHNjb3BlLmFkZEJyZWFkY3J1bWIoZmluYWxCcmVhZGNydW1iLCBtYXhCcmVhZGNydW1icyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldFVzZXIoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VXNlcih1c2VyKSB7CiAgICAvLyBUT0RPKHY4KTogVGhlIHRvcCBsZXZlbCBgU2VudHJ5LnNldFVzZXIoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldFVzZXIodXNlcik7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRVc2VyKHVzZXIpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWdzKClgIGluc3RlYWQuCiAgICovCiAgIHNldFRhZ3ModGFncykgewogICAgLy8gVE9ETyh2OCk6IFRoZSB0b3AgbGV2ZWwgYFNlbnRyeS5zZXRUYWdzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWdzKHRhZ3MpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0VGFncyh0YWdzKTsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBTZW50cnkuc2V0RXh0cmFzKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhcyhleHRyYXMpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmFzKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRFeHRyYXMoZXh0cmFzKTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldEV4dHJhcyhleHRyYXMpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgYFNlbnRyeS5zZXRUYWcoKWAgaW5zdGVhZC4KICAgKi8KICAgc2V0VGFnKGtleSwgdmFsdWUpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0VGFnKClgIGZ1bmN0aW9uIHNob3VsZCB3cml0ZSBPTkxZIHRvIHRoZSBpc29sYXRpb24gc2NvcGUuCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0U2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIHRoaXMuZ2V0SXNvbGF0aW9uU2NvcGUoKS5zZXRUYWcoa2V5LCB2YWx1ZSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldEV4dHJhKClgIGluc3RlYWQuCiAgICovCiAgIHNldEV4dHJhKGtleSwgZXh0cmEpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0RXh0cmEoKWAgZnVuY3Rpb24gc2hvdWxkIHdyaXRlIE9OTFkgdG8gdGhlIGlzb2xhdGlvbiBzY29wZS4KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRTY29wZSgpLnNldEV4dHJhKGtleSwgZXh0cmEpOwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldElzb2xhdGlvblNjb3BlKCkuc2V0RXh0cmEoa2V5LCBleHRyYSk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LnNldENvbnRleHQoKWAgaW5zdGVhZC4KICAgKi8KICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICBzZXRDb250ZXh0KG5hbWUsIGNvbnRleHQpIHsKICAgIC8vIFRPRE8odjgpOiBUaGUgdG9wIGxldmVsIGBTZW50cnkuc2V0Q29udGV4dCgpYCBmdW5jdGlvbiBzaG91bGQgd3JpdGUgT05MWSB0byB0aGUgaXNvbGF0aW9uIHNjb3BlLgogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICB0aGlzLmdldFNjb3BlKCkuc2V0Q29udGV4dChuYW1lLCBjb250ZXh0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5nZXRJc29sYXRpb25TY29wZSgpLnNldENvbnRleHQobmFtZSwgY29udGV4dCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBnZXRTY29wZSgpYCBkaXJlY3RseS4KICAgKi8KICAgY29uZmlndXJlU2NvcGUoY2FsbGJhY2spIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CiAgICBpZiAoY2xpZW50KSB7CiAgICAgIGNhbGxiYWNrKHNjb3BlKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICovCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgIHJ1bihjYWxsYmFjaykgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBvbGRIdWIgPSBtYWtlTWFpbih0aGlzKTsKICAgIHRyeSB7CiAgICAgIGNhbGxiYWNrKHRoaXMpOwogICAgfSBmaW5hbGx5IHsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICAgIG1ha2VNYWluKG9sZEh1Yik7CiAgICB9CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSBgU2VudHJ5LmdldENsaWVudCgpLmdldEludGVncmF0aW9uQnlOYW1lKClgIGluc3RlYWQuCiAgICovCiAgIGdldEludGVncmF0aW9uKGludGVncmF0aW9uKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KCk7CiAgICBpZiAoIWNsaWVudCkgcmV0dXJuIG51bGw7CiAgICB0cnkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgcmV0dXJuIGNsaWVudC5nZXRJbnRlZ3JhdGlvbihpbnRlZ3JhdGlvbik7CiAgICB9IGNhdGNoIChfb08pIHsKICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYENhbm5vdCByZXRyaWV2ZSBpbnRlZ3JhdGlvbiAke2ludGVncmF0aW9uLmlkfSBmcm9tIHRoZSBjdXJyZW50IEh1YmApOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIC8qKgogICAqIFN0YXJ0cyBhIG5ldyBgVHJhbnNhY3Rpb25gIGFuZCByZXR1cm5zIGl0LiBUaGlzIGlzIHRoZSBlbnRyeSBwb2ludCB0byBtYW51YWwgdHJhY2luZyBpbnN0cnVtZW50YXRpb24uCiAgICoKICAgKiBBIHRyZWUgc3RydWN0dXJlIGNhbiBiZSBidWlsdCBieSBhZGRpbmcgY2hpbGQgc3BhbnMgdG8gdGhlIHRyYW5zYWN0aW9uLCBhbmQgY2hpbGQgc3BhbnMgdG8gb3RoZXIgc3BhbnMuIFRvIHN0YXJ0IGEKICAgKiBuZXcgY2hpbGQgc3BhbiB3aXRoaW4gdGhlIHRyYW5zYWN0aW9uIG9yIGFueSBzcGFuLCBjYWxsIHRoZSByZXNwZWN0aXZlIGAuc3RhcnRDaGlsZCgpYCBtZXRob2QuCiAgICoKICAgKiBFdmVyeSBjaGlsZCBzcGFuIG11c3QgYmUgZmluaXNoZWQgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCwgb3RoZXJ3aXNlIHRoZSB1bmZpbmlzaGVkIHNwYW5zIGFyZSBkaXNjYXJkZWQuCiAgICoKICAgKiBUaGUgdHJhbnNhY3Rpb24gbXVzdCBiZSBmaW5pc2hlZCB3aXRoIGEgY2FsbCB0byBpdHMgYC5lbmQoKWAgbWV0aG9kLCBhdCB3aGljaCBwb2ludCB0aGUgdHJhbnNhY3Rpb24gd2l0aCBhbGwgaXRzCiAgICogZmluaXNoZWQgY2hpbGQgc3BhbnMgd2lsbCBiZSBzZW50IHRvIFNlbnRyeS4KICAgKgogICAqIEBwYXJhbSBjb250ZXh0IFByb3BlcnRpZXMgb2YgdGhlIG5ldyBgVHJhbnNhY3Rpb25gLgogICAqIEBwYXJhbSBjdXN0b21TYW1wbGluZ0NvbnRleHQgSW5mb3JtYXRpb24gZ2l2ZW4gdG8gdGhlIHRyYW5zYWN0aW9uIHNhbXBsaW5nIGZ1bmN0aW9uIChhbG9uZyB3aXRoIGNvbnRleHQtZGVwZW5kZW50CiAgICogZGVmYXVsdCB2YWx1ZXMpLiBTZWUge0BsaW5rIE9wdGlvbnMudHJhY2VzU2FtcGxlcn0uCiAgICoKICAgKiBAcmV0dXJucyBUaGUgdHJhbnNhY3Rpb24gd2hpY2ggd2FzIGp1c3Qgc3RhcnRlZAogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzdGFydFNwYW4oKWAsIGBzdGFydFNwYW5NYW51YWwoKWAgb3IgYHN0YXJ0SW5hY3RpdmVTcGFuKClgIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0VHJhbnNhY3Rpb24oY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KSB7CiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jYWxsRXh0ZW5zaW9uTWV0aG9kKCdzdGFydFRyYW5zYWN0aW9uJywgY29udGV4dCwgY3VzdG9tU2FtcGxpbmdDb250ZXh0KTsKCiAgICBpZiAoREVCVUdfQlVJTEQgJiYgIXJlc3VsdCkgewogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoKTsKICAgICAgaWYgKCFjbGllbnQpIHsKICAgICAgICBsb2dnZXIud2FybigKICAgICAgICAgICJUcmFjaW5nIGV4dGVuc2lvbiAnc3RhcnRUcmFuc2FjdGlvbicgaXMgbWlzc2luZy4gWW91IHNob3VsZCAnaW5pdCcgdGhlIFNESyBiZWZvcmUgY2FsbGluZyAnc3RhcnRUcmFuc2FjdGlvbiciLAogICAgICAgICk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbG9nZ2VyLndhcm4oYFRyYWNpbmcgZXh0ZW5zaW9uICdzdGFydFRyYW5zYWN0aW9uJyBoYXMgbm90IGJlZW4gYWRkZWQuIENhbGwgJ2FkZFRyYWNpbmdFeHRlbnNpb25zJyBiZWZvcmUgY2FsbGluZyAnaW5pdCc6ClNlbnRyeS5hZGRUcmFjaW5nRXh0ZW5zaW9ucygpOwpTZW50cnkuaW5pdCh7Li4ufSk7CmApOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIC8qKgogICAqIEBpbmhlcml0RG9jCiAgICogQGRlcHJlY2F0ZWQgVXNlIGBzcGFuVG9UcmFjZUhlYWRlcigpYCBpbnN0ZWFkLgogICAqLwogICB0cmFjZUhlYWRlcnMoKSB7CiAgICByZXR1cm4gdGhpcy5fY2FsbEV4dGVuc2lvbk1ldGhvZCgndHJhY2VIZWFkZXJzJyk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqCiAgICogQGRlcHJlY2F0ZWQgVXNlIHRvcCBsZXZlbCBgY2FwdHVyZVNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGNhcHR1cmVTZXNzaW9uKGVuZFNlc3Npb24gPSBmYWxzZSkgewogICAgLy8gYm90aCBzZW5kIHRoZSB1cGRhdGUgYW5kIHB1bGwgdGhlIHNlc3Npb24gZnJvbSB0aGUgc2NvcGUKICAgIGlmIChlbmRTZXNzaW9uKSB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgICByZXR1cm4gdGhpcy5lbmRTZXNzaW9uKCk7CiAgICB9CgogICAgLy8gb25seSBzZW5kIHRoZSB1cGRhdGUKICAgIHRoaXMuX3NlbmRTZXNzaW9uVXBkYXRlKCk7CiAgfQoKICAvKioKICAgKiBAaW5oZXJpdERvYwogICAqIEBkZXByZWNhdGVkIFVzZSB0b3AgbGV2ZWwgYGVuZFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIGVuZFNlc3Npb24oKSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IGxheWVyID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3Qgc2NvcGUgPSBsYXllci5zY29wZTsKICAgIGNvbnN0IHNlc3Npb24gPSBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoc2Vzc2lvbikgewogICAgICBjbG9zZVNlc3Npb24oc2Vzc2lvbik7CiAgICB9CiAgICB0aGlzLl9zZW5kU2Vzc2lvblVwZGF0ZSgpOwoKICAgIC8vIHRoZSBzZXNzaW9uIGlzIG92ZXI7IHRha2UgaXQgb2ZmIG9mIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbigpOwogIH0KCiAgLyoqCiAgICogQGluaGVyaXREb2MKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wIGxldmVsIGBzdGFydFNlc3Npb25gIGluc3RlYWQuCiAgICovCiAgIHN0YXJ0U2Vzc2lvbihjb250ZXh0KSB7CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24KICAgIGNvbnN0IHsgc2NvcGUsIGNsaWVudCB9ID0gdGhpcy5nZXRTdGFja1RvcCgpOwogICAgY29uc3QgeyByZWxlYXNlLCBlbnZpcm9ubWVudCA9IERFRkFVTFRfRU5WSVJPTk1FTlQgfSA9IChjbGllbnQgJiYgY2xpZW50LmdldE9wdGlvbnMoKSkgfHwge307CgogICAgLy8gV2lsbCBmZXRjaCB1c2VyQWdlbnQgaWYgY2FsbGVkIGZyb20gYnJvd3NlciBzZGsKICAgIGNvbnN0IHsgdXNlckFnZW50IH0gPSBHTE9CQUxfT0JKLm5hdmlnYXRvciB8fCB7fTsKCiAgICBjb25zdCBzZXNzaW9uID0gbWFrZVNlc3Npb24oewogICAgICByZWxlYXNlLAogICAgICBlbnZpcm9ubWVudCwKICAgICAgdXNlcjogc2NvcGUuZ2V0VXNlcigpLAogICAgICAuLi4odXNlckFnZW50ICYmIHsgdXNlckFnZW50IH0pLAogICAgICAuLi5jb250ZXh0LAogICAgfSk7CgogICAgLy8gRW5kIGV4aXN0aW5nIHNlc3Npb24gaWYgdGhlcmUncyBvbmUKICAgIGNvbnN0IGN1cnJlbnRTZXNzaW9uID0gc2NvcGUuZ2V0U2Vzc2lvbiAmJiBzY29wZS5nZXRTZXNzaW9uKCk7CiAgICBpZiAoY3VycmVudFNlc3Npb24gJiYgY3VycmVudFNlc3Npb24uc3RhdHVzID09PSAnb2snKSB7CiAgICAgIHVwZGF0ZVNlc3Npb24oY3VycmVudFNlc3Npb24sIHsgc3RhdHVzOiAnZXhpdGVkJyB9KTsKICAgIH0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgdGhpcy5lbmRTZXNzaW9uKCk7CgogICAgLy8gQWZ0ZXJ3YXJkcyB3ZSBzZXQgdGhlIG5ldyBzZXNzaW9uIG9uIHRoZSBzY29wZQogICAgc2NvcGUuc2V0U2Vzc2lvbihzZXNzaW9uKTsKCiAgICByZXR1cm4gc2Vzc2lvbjsKICB9CgogIC8qKgogICAqIFJldHVybnMgaWYgZGVmYXVsdCBQSUkgc2hvdWxkIGJlIHNlbnQgdG8gU2VudHJ5IGFuZCBwcm9wYWdhdGVkIGluIG91cmdvaW5nIHJlcXVlc3RzCiAgICogd2hlbiBUcmFjaW5nIGlzIHVzZWQuCiAgICoKICAgKiBAZGVwcmVjYXRlZCBVc2UgdG9wLWxldmVsIGBnZXRDbGllbnQoKS5nZXRPcHRpb25zKCkuc2VuZERlZmF1bHRQaWlgIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24KICAgKiBvbmx5IHVubmVjZXNzYXJpbHkgaW5jcmVhc2VkIEFQSSBzdXJmYWNlIGJ1dCBvbmx5IHdyYXBwZWQgYWNjZXNzaW5nIHRoZSBvcHRpb24uCiAgICovCiAgIHNob3VsZFNlbmREZWZhdWx0UGlpKCkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBjb25zdCBjbGllbnQgPSB0aGlzLmdldENsaWVudCgpOwogICAgY29uc3Qgb3B0aW9ucyA9IGNsaWVudCAmJiBjbGllbnQuZ2V0T3B0aW9ucygpOwogICAgcmV0dXJuIEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLnNlbmREZWZhdWx0UGlpKTsKICB9CgogIC8qKgogICAqIFNlbmRzIHRoZSBjdXJyZW50IFNlc3Npb24gb24gdGhlIHNjb3BlCiAgICovCiAgIF9zZW5kU2Vzc2lvblVwZGF0ZSgpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgY29uc3QgeyBzY29wZSwgY2xpZW50IH0gPSB0aGlzLmdldFN0YWNrVG9wKCk7CgogICAgY29uc3Qgc2Vzc2lvbiA9IHNjb3BlLmdldFNlc3Npb24oKTsKICAgIGlmIChzZXNzaW9uICYmIGNsaWVudCAmJiBjbGllbnQuY2FwdHVyZVNlc3Npb24pIHsKICAgICAgY2xpZW50LmNhcHR1cmVTZXNzaW9uKHNlc3Npb24pOwogICAgfQogIH0KCiAgLyoqCiAgICogQ2FsbHMgZ2xvYmFsIGV4dGVuc2lvbiBtZXRob2QgYW5kIGJpbmRpbmcgY3VycmVudCBpbnN0YW5jZSB0byB0aGUgZnVuY3Rpb24gY2FsbAogICAqLwogIC8vIEB0cy1leHBlY3QtZXJyb3IgRnVuY3Rpb24gbGFja3MgZW5kaW5nIHJldHVybiBzdGF0ZW1lbnQgYW5kIHJldHVybiB0eXBlIGRvZXMgbm90IGluY2x1ZGUgJ3VuZGVmaW5lZCcuIHRzKDIzNjYpCiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkKICAgX2NhbGxFeHRlbnNpb25NZXRob2QobWV0aG9kLCAuLi5hcmdzKSB7CiAgICBjb25zdCBjYXJyaWVyID0gZ2V0TWFpbkNhcnJpZXIoKTsKICAgIGNvbnN0IHNlbnRyeSA9IGNhcnJpZXIuX19TRU5UUllfXzsKICAgIGlmIChzZW50cnkgJiYgc2VudHJ5LmV4dGVuc2lvbnMgJiYgdHlwZW9mIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIHNlbnRyeS5leHRlbnNpb25zW21ldGhvZF0uYXBwbHkodGhpcywgYXJncyk7CiAgICB9CiAgICBERUJVR19CVUlMRCAmJiBsb2dnZXIud2FybihgRXh0ZW5zaW9uIG1ldGhvZCAke21ldGhvZH0gY291bGRuJ3QgYmUgZm91bmQsIGRvaW5nIG5vdGhpbmcuYCk7CiAgfQp9CgovKioKICogUmV0dXJucyB0aGUgZ2xvYmFsIHNoaW0gcmVnaXN0cnkuCiAqCiAqIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGRlc3BpdGUgYWx3YXlzIHJldHVybmluZyBhIHZhbGlkIENhcnJpZXIsCiAqIGl0IGhhcyBhbiBvcHRpb25hbCBgX19TRU5UUllfX2AgcHJvcGVydHksIHdoaWNoIHRoZW4gaW4gdHVybiByZXF1aXJlcyB1cyB0byBhbHdheXMgcGVyZm9ybSBhbiB1bm5lY2Vzc2FyeSBjaGVjawogKiBhdCB0aGUgY2FsbC1zaXRlLiBXZSBhbHdheXMgYWNjZXNzIHRoZSBjYXJyaWVyIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgc28gd2UgY2FuIGd1YXJhbnRlZSB0aGF0IGBfX1NFTlRSWV9fYCBpcyB0aGVyZS4KICoqLwpmdW5jdGlvbiBnZXRNYWluQ2FycmllcigpIHsKICBHTE9CQUxfT0JKLl9fU0VOVFJZX18gPSBHTE9CQUxfT0JKLl9fU0VOVFJZX18gfHwgewogICAgZXh0ZW5zaW9uczoge30sCiAgICBodWI6IHVuZGVmaW5lZCwKICB9OwogIHJldHVybiBHTE9CQUxfT0JKOwp9CgovKioKICogUmVwbGFjZXMgdGhlIGN1cnJlbnQgbWFpbiBodWIgd2l0aCB0aGUgcGFzc2VkIG9uZSBvbiB0aGUgZ2xvYmFsIG9iamVjdAogKgogKiBAcmV0dXJucyBUaGUgb2xkIHJlcGxhY2VkIGh1YgogKgogKiBAZGVwcmVjYXRlZCBVc2UgYHNldEN1cnJlbnRDbGllbnQoKWAgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBtYWtlTWFpbihodWIpIHsKICBjb25zdCByZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCk7CiAgY29uc3Qgb2xkSHViID0gZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpOwogIHNldEh1Yk9uQ2FycmllcihyZWdpc3RyeSwgaHViKTsKICByZXR1cm4gb2xkSHViOwp9CgovKioKICogUmV0dXJucyB0aGUgZGVmYXVsdCBodWIgaW5zdGFuY2UuCiAqCiAqIElmIGEgaHViIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiB0aGUgZ2xvYmFsIGNhcnJpZXIgYnV0IHRoaXMgbW9kdWxlCiAqIGNvbnRhaW5zIGEgbW9yZSByZWNlbnQgdmVyc2lvbiwgaXQgcmVwbGFjZXMgdGhlIHJlZ2lzdGVyZWQgdmVyc2lvbi4KICogT3RoZXJ3aXNlLCB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgaHViIHdpbGwgYmUgcmV0dXJuZWQuCiAqCiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgcmVzcGVjdGl2ZSByZXBsYWNlbWVudCBtZXRob2QgZGlyZWN0bHkgaW5zdGVhZC4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRDdXJyZW50SHViKCkgewogIC8vIEdldCBtYWluIGNhcnJpZXIgKGdsb2JhbCBmb3IgZXZlcnkgZW52aXJvbm1lbnQpCiAgY29uc3QgcmVnaXN0cnkgPSBnZXRNYWluQ2FycmllcigpOwoKICBpZiAocmVnaXN0cnkuX19TRU5UUllfXyAmJiByZWdpc3RyeS5fX1NFTlRSWV9fLmFjcykgewogICAgY29uc3QgaHViID0gcmVnaXN0cnkuX19TRU5UUllfXy5hY3MuZ2V0Q3VycmVudEh1YigpOwoKICAgIGlmIChodWIpIHsKICAgICAgcmV0dXJuIGh1YjsKICAgIH0KICB9CgogIC8vIFJldHVybiBodWIgdGhhdCBsaXZlcyBvbiBhIGdsb2JhbCBvYmplY3QKICByZXR1cm4gZ2V0R2xvYmFsSHViKHJlZ2lzdHJ5KTsKfQoKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCmZ1bmN0aW9uIGdldEdsb2JhbEh1YihyZWdpc3RyeSA9IGdldE1haW5DYXJyaWVyKCkpIHsKICAvLyBJZiB0aGVyZSdzIG5vIGh1Yiwgb3IgaXRzIGFuIG9sZCBBUEksIGFzc2lnbiBhIG5ldyBvbmUKCiAgaWYgKAogICAgIWhhc0h1Yk9uQ2FycmllcihyZWdpc3RyeSkgfHwKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgogICAgZ2V0SHViRnJvbUNhcnJpZXIocmVnaXN0cnkpLmlzT2xkZXJUaGFuKEFQSV9WRVJTSU9OKQogICkgewogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgICBzZXRIdWJPbkNhcnJpZXIocmVnaXN0cnksIG5ldyBIdWIoKSk7CiAgfQoKICAvLyBSZXR1cm4gaHViIHRoYXQgbGl2ZXMgb24gYSBnbG9iYWwgb2JqZWN0CiAgcmV0dXJuIGdldEh1YkZyb21DYXJyaWVyKHJlZ2lzdHJ5KTsKfQoKLyoqCiAqIFRoaXMgd2lsbCB0ZWxsIHdoZXRoZXIgYSBjYXJyaWVyIGhhcyBhIGh1YiBvbiBpdCBvciBub3QKICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqLwpmdW5jdGlvbiBoYXNIdWJPbkNhcnJpZXIoY2FycmllcikgewogIHJldHVybiAhIShjYXJyaWVyICYmIGNhcnJpZXIuX19TRU5UUllfXyAmJiBjYXJyaWVyLl9fU0VOVFJZX18uaHViKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcge0BsaW5rIEh1Yn0gYW5kIGFkZCB0byB0aGUgcGFzc2VkIG9iamVjdCBvbgogKiBfX1NFTlRSWV9fLmh1Yi4KICogQHBhcmFtIGNhcnJpZXIgb2JqZWN0CiAqIEBoaWRkZW4KICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBnZXRIdWJGcm9tQ2FycmllcihjYXJyaWVyKSB7CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uCiAgcmV0dXJuIGdldEdsb2JhbFNpbmdsZXRvbignaHViJywgKCkgPT4gbmV3IEh1YigpLCBjYXJyaWVyKTsKfQoKLyoqCiAqIFRoaXMgd2lsbCBzZXQgcGFzc2VkIHtAbGluayBIdWJ9IG9uIHRoZSBwYXNzZWQgb2JqZWN0J3MgX19TRU5UUllfXy5odWIgYXR0cmlidXRlCiAqIEBwYXJhbSBjYXJyaWVyIG9iamVjdAogKiBAcGFyYW0gaHViIEh1YgogKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyBzdWNjZXNzIG9yIGZhaWx1cmUKICovCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbgpmdW5jdGlvbiBzZXRIdWJPbkNhcnJpZXIoY2FycmllciwgaHViKSB7CiAgaWYgKCFjYXJyaWVyKSByZXR1cm4gZmFsc2U7CiAgY29uc3QgX19TRU5UUllfXyA9IChjYXJyaWVyLl9fU0VOVFJZX18gPSBjYXJyaWVyLl9fU0VOVFJZX18gfHwge30pOwogIF9fU0VOVFJZX18uaHViID0gaHViOwogIHJldHVybiB0cnVlOwp9CgovKioKICogQXBwbHkgU2RrSW5mbyAobmFtZSwgdmVyc2lvbiwgcGFja2FnZXMsIGludGVncmF0aW9ucykgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZXZlbnQga2V5LgogKiBNZXJnZSB3aXRoIGV4aXN0aW5nIGRhdGEgaWYgYW55LgogKiovCmZ1bmN0aW9uIGVuaGFuY2VFdmVudFdpdGhTZGtJbmZvKGV2ZW50LCBzZGtJbmZvKSB7CiAgaWYgKCFzZGtJbmZvKSB7CiAgICByZXR1cm4gZXZlbnQ7CiAgfQogIGV2ZW50LnNkayA9IGV2ZW50LnNkayB8fCB7fTsKICBldmVudC5zZGsubmFtZSA9IGV2ZW50LnNkay5uYW1lIHx8IHNka0luZm8ubmFtZTsKICBldmVudC5zZGsudmVyc2lvbiA9IGV2ZW50LnNkay52ZXJzaW9uIHx8IHNka0luZm8udmVyc2lvbjsKICBldmVudC5zZGsuaW50ZWdyYXRpb25zID0gWy4uLihldmVudC5zZGsuaW50ZWdyYXRpb25zIHx8IFtdKSwgLi4uKHNka0luZm8uaW50ZWdyYXRpb25zIHx8IFtdKV07CiAgZXZlbnQuc2RrLnBhY2thZ2VzID0gWy4uLihldmVudC5zZGsucGFja2FnZXMgfHwgW10pLCAuLi4oc2RrSW5mby5wYWNrYWdlcyB8fCBbXSldOwogIHJldHVybiBldmVudDsKfQoKLyoqIENyZWF0ZXMgYW4gZW52ZWxvcGUgZnJvbSBhIFNlc3Npb24gKi8KZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkVudmVsb3BlKAogIHNlc3Npb24sCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IHsKICAgIHNlbnRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSwKICAgIC4uLihzZGtJbmZvICYmIHsgc2RrOiBzZGtJbmZvIH0pLAogICAgLi4uKCEhdHVubmVsICYmIGRzbiAmJiB7IGRzbjogZHNuVG9TdHJpbmcoZHNuKSB9KSwKICB9OwoKICBjb25zdCBlbnZlbG9wZUl0ZW0gPQogICAgJ2FnZ3JlZ2F0ZXMnIGluIHNlc3Npb24gPyBbeyB0eXBlOiAnc2Vzc2lvbnMnIH0sIHNlc3Npb25dIDogW3sgdHlwZTogJ3Nlc3Npb24nIH0sIHNlc3Npb24udG9KU09OKCldOwoKICByZXR1cm4gY3JlYXRlRW52ZWxvcGUoZW52ZWxvcGVIZWFkZXJzLCBbZW52ZWxvcGVJdGVtXSk7Cn0KCi8qKgogKiBDcmVhdGUgYW4gRW52ZWxvcGUgZnJvbSBhbiBldmVudC4KICovCmZ1bmN0aW9uIGNyZWF0ZUV2ZW50RW52ZWxvcGUoCiAgZXZlbnQsCiAgZHNuLAogIG1ldGFkYXRhLAogIHR1bm5lbCwKKSB7CiAgY29uc3Qgc2RrSW5mbyA9IGdldFNka01ldGFkYXRhRm9yRW52ZWxvcGVIZWFkZXIobWV0YWRhdGEpOwoKICAvKgogICAgTm90ZTogRHVlIHRvIFRTLCBldmVudC50eXBlIG1heSBiZSBgcmVwbGF5X2V2ZW50YCwgdGhlb3JldGljYWxseS4KICAgIEluIHByYWN0aWNlLCB3ZSBuZXZlciBjYWxsIGBjcmVhdGVFdmVudEVudmVsb3BlYCB3aXRoIGByZXBsYXlfZXZlbnRgIHR5cGUsCiAgICBhbmQgd2UnZCBoYXZlIHRvIGFkanV0IGEgbG9vb3Qgb2YgdHlwZXMgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHkuCiAgICBXZSB3YW50IHRvIGF2b2lkIGNhc3RpbmcgdGhpcyBhcm91bmQsIGFzIHRoYXQgY291bGQgbGVhZCB0byBidWdzIChlLmcuIHdoZW4gd2UgYWRkIGFub3RoZXIgdHlwZSkKICAgIFNvIHRoZSBzYWZlIGNob2ljZSBpcyB0byByZWFsbHkgZ3VhcmQgYWdhaW5zdCB0aGUgcmVwbGF5X2V2ZW50IHR5cGUgaGVyZS4KICAqLwogIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUgJiYgZXZlbnQudHlwZSAhPT0gJ3JlcGxheV9ldmVudCcgPyBldmVudC50eXBlIDogJ2V2ZW50JzsKCiAgZW5oYW5jZUV2ZW50V2l0aFNka0luZm8oZXZlbnQsIG1ldGFkYXRhICYmIG1ldGFkYXRhLnNkayk7CgogIGNvbnN0IGVudmVsb3BlSGVhZGVycyA9IGNyZWF0ZUV2ZW50RW52ZWxvcGVIZWFkZXJzKGV2ZW50LCBzZGtJbmZvLCB0dW5uZWwsIGRzbik7CgogIC8vIFByZXZlbnQgdGhpcyBkYXRhICh3aGljaCwgaWYgaXQgZXhpc3RzLCB3YXMgdXNlZCBpbiBlYXJsaWVyIHN0ZXBzIGluIHRoZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSBmcm9tIGJlaW5nIHNlbnQgdG8KICAvLyBzZW50cnkuIChOb3RlOiBPdXIgdXNlIG9mIHRoaXMgcHJvcGVydHkgY29tZXMgYW5kIGdvZXMgd2l0aCB3aGF0ZXZlciB3ZSBtaWdodCBiZSBkZWJ1Z2dpbmcsIHdoYXRldmVyIGhhY2tzIHdlIG1heQogIC8vIGhhdmUgdGVtcG9yYXJpbHkgYWRkZWQsIGV0Yy4gRXZlbiBpZiB3ZSBkb24ndCBoYXBwZW4gdG8gYmUgdXNpbmcgaXQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBsZXQncyBub3QgZ2V0IHJpZAogIC8vIG9mIHRoaXMgYGRlbGV0ZWAsIGxlc3Qgd2UgbWlzcyBwdXR0aW5nIGl0IGJhY2sgaW4gdGhlIG5leHQgdGltZSB0aGUgcHJvcGVydHkgaXMgaW4gdXNlLikKICBkZWxldGUgZXZlbnQuc2RrUHJvY2Vzc2luZ01ldGFkYXRhOwoKICBjb25zdCBldmVudEl0ZW0gPSBbeyB0eXBlOiBldmVudFR5cGUgfSwgZXZlbnRdOwogIHJldHVybiBjcmVhdGVFbnZlbG9wZShlbnZlbG9wZUhlYWRlcnMsIFtldmVudEl0ZW1dKTsKfQoKY29uc3QgU0VOVFJZX0FQSV9WRVJTSU9OID0gJzcnOwoKLyoqIFJldHVybnMgdGhlIHByZWZpeCB0byBjb25zdHJ1Y3QgU2VudHJ5IGluZ2VzdGlvbiBBUEkgZW5kcG9pbnRzLiAqLwpmdW5jdGlvbiBnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKSB7CiAgY29uc3QgcHJvdG9jb2wgPSBkc24ucHJvdG9jb2wgPyBgJHtkc24ucHJvdG9jb2x9OmAgOiAnJzsKICBjb25zdCBwb3J0ID0gZHNuLnBvcnQgPyBgOiR7ZHNuLnBvcnR9YCA6ICcnOwogIHJldHVybiBgJHtwcm90b2NvbH0vLyR7ZHNuLmhvc3R9JHtwb3J0fSR7ZHNuLnBhdGggPyBgLyR7ZHNuLnBhdGh9YCA6ICcnfS9hcGkvYDsKfQoKLyoqIFJldHVybnMgdGhlIGluZ2VzdCBBUEkgZW5kcG9pbnQgZm9yIHRhcmdldC4gKi8KZnVuY3Rpb24gX2dldEluZ2VzdEVuZHBvaW50KGRzbikgewogIHJldHVybiBgJHtnZXRCYXNlQXBpRW5kcG9pbnQoZHNuKX0ke2Rzbi5wcm9qZWN0SWR9L2VudmVsb3BlL2A7Cn0KCi8qKiBSZXR1cm5zIGEgVVJMLWVuY29kZWQgc3RyaW5nIHdpdGggYXV0aCBjb25maWcgc3VpdGFibGUgZm9yIGEgcXVlcnkgc3RyaW5nLiAqLwpmdW5jdGlvbiBfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKSB7CiAgcmV0dXJuIHVybEVuY29kZSh7CiAgICAvLyBXZSBzZW5kIG9ubHkgdGhlIG1pbmltdW0gc2V0IG9mIHJlcXVpcmVkIGluZm9ybWF0aW9uLiBTZWUKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LWphdmFzY3JpcHQvaXNzdWVzLzI1NzIuCiAgICBzZW50cnlfa2V5OiBkc24ucHVibGljS2V5LAogICAgc2VudHJ5X3ZlcnNpb246IFNFTlRSWV9BUElfVkVSU0lPTiwKICAgIC4uLihzZGtJbmZvICYmIHsgc2VudHJ5X2NsaWVudDogYCR7c2RrSW5mby5uYW1lfS8ke3Nka0luZm8udmVyc2lvbn1gIH0pLAogIH0pOwp9CgovKioKICogUmV0dXJucyB0aGUgZW52ZWxvcGUgZW5kcG9pbnQgVVJMIHdpdGggYXV0aCBpbiB0aGUgcXVlcnkgc3RyaW5nLgogKgogKiBTZW5kaW5nIGF1dGggYXMgcGFydCBvZiB0aGUgcXVlcnkgc3RyaW5nIGFuZCBub3QgYXMgY3VzdG9tIEhUVFAgaGVhZGVycyBhdm9pZHMgQ09SUyBwcmVmbGlnaHQgcmVxdWVzdHMuCiAqLwpmdW5jdGlvbiBnZXRFbnZlbG9wZUVuZHBvaW50V2l0aFVybEVuY29kZWRBdXRoKAogIGRzbiwKICAvLyBUT0RPICh2OCk6IFJlbW92ZSBgdHVubmVsT3JPcHRpb25zYCBpbiBmYXZvciBvZiBgb3B0aW9uc2AsIGFuZCB1c2UgdGhlIHN1YnN0aXR1dGUgY29kZSBiZWxvdwogIC8vIG9wdGlvbnM6IENsaWVudE9wdGlvbnMgPSB7fSBhcyBDbGllbnRPcHRpb25zLAogIHR1bm5lbE9yT3B0aW9ucyA9IHt9ICwKKSB7CiAgLy8gVE9ETyAodjgpOiBVc2UgdGhpcyBjb2RlIGluc3RlYWQKICAvLyBjb25zdCB7IHR1bm5lbCwgX21ldGFkYXRhID0ge30gfSA9IG9wdGlvbnM7CiAgLy8gcmV0dXJuIHR1bm5lbCA/IHR1bm5lbCA6IGAke19nZXRJbmdlc3RFbmRwb2ludChkc24pfT8ke19lbmNvZGVkQXV0aChkc24sIF9tZXRhZGF0YS5zZGspfWA7CgogIGNvbnN0IHR1bm5lbCA9IHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnID8gdHVubmVsT3JPcHRpb25zIDogdHVubmVsT3JPcHRpb25zLnR1bm5lbDsKICBjb25zdCBzZGtJbmZvID0KICAgIHR5cGVvZiB0dW5uZWxPck9wdGlvbnMgPT09ICdzdHJpbmcnIHx8ICF0dW5uZWxPck9wdGlvbnMuX21ldGFkYXRhID8gdW5kZWZpbmVkIDogdHVubmVsT3JPcHRpb25zLl9tZXRhZGF0YS5zZGs7CgogIHJldHVybiB0dW5uZWwgPyB0dW5uZWwgOiBgJHtfZ2V0SW5nZXN0RW5kcG9pbnQoZHNuKX0/JHtfZW5jb2RlZEF1dGgoZHNuLCBzZGtJbmZvKX1gOwp9Cgpjb25zdCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSA9IDMwOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgYSBTZW50cnkgYFRyYW5zcG9ydGAKICoKICogQHBhcmFtIG9wdGlvbnMKICogQHBhcmFtIG1ha2VSZXF1ZXN0CiAqLwpmdW5jdGlvbiBjcmVhdGVUcmFuc3BvcnQoCiAgb3B0aW9ucywKICBtYWtlUmVxdWVzdCwKICBidWZmZXIgPSBtYWtlUHJvbWlzZUJ1ZmZlcigKICAgIG9wdGlvbnMuYnVmZmVyU2l6ZSB8fCBERUZBVUxUX1RSQU5TUE9SVF9CVUZGRVJfU0laRSwKICApLAopIHsKICBsZXQgcmF0ZUxpbWl0cyA9IHt9OwogIGNvbnN0IGZsdXNoID0gKHRpbWVvdXQpID0+IGJ1ZmZlci5kcmFpbih0aW1lb3V0KTsKCiAgZnVuY3Rpb24gc2VuZChlbnZlbG9wZSkgewogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZUl0ZW1zID0gW107CgogICAgLy8gRHJvcCByYXRlIGxpbWl0ZWQgaXRlbXMgZnJvbSBlbnZlbG9wZQogICAgZm9yRWFjaEVudmVsb3BlSXRlbShlbnZlbG9wZSwgKGl0ZW0sIHR5cGUpID0+IHsKICAgICAgY29uc3QgZGF0YUNhdGVnb3J5ID0gZW52ZWxvcGVJdGVtVHlwZVRvRGF0YUNhdGVnb3J5KHR5cGUpOwogICAgICBpZiAoaXNSYXRlTGltaXRlZChyYXRlTGltaXRzLCBkYXRhQ2F0ZWdvcnkpKSB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudCgncmF0ZWxpbWl0X2JhY2tvZmYnLCBkYXRhQ2F0ZWdvcnksIGV2ZW50KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmaWx0ZXJlZEVudmVsb3BlSXRlbXMucHVzaChpdGVtKTsKICAgICAgfQogICAgfSk7CgogICAgLy8gU2tpcCBzZW5kaW5nIGlmIGVudmVsb3BlIGlzIGVtcHR5IGFmdGVyIGZpbHRlcmluZyBvdXQgcmF0ZSBsaW1pdGVkIGV2ZW50cwogICAgaWYgKGZpbHRlcmVkRW52ZWxvcGVJdGVtcy5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHJlc29sdmVkU3luY1Byb21pc2UoKTsKICAgIH0KCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueQogICAgY29uc3QgZmlsdGVyZWRFbnZlbG9wZSA9IGNyZWF0ZUVudmVsb3BlKGVudmVsb3BlWzBdLCBmaWx0ZXJlZEVudmVsb3BlSXRlbXMgKTsKCiAgICAvLyBDcmVhdGVzIGNsaWVudCByZXBvcnQgZm9yIGVhY2ggaXRlbSBpbiBhbiBlbnZlbG9wZQogICAgY29uc3QgcmVjb3JkRW52ZWxvcGVMb3NzID0gKHJlYXNvbikgPT4gewogICAgICBmb3JFYWNoRW52ZWxvcGVJdGVtKGZpbHRlcmVkRW52ZWxvcGUsIChpdGVtLCB0eXBlKSA9PiB7CiAgICAgICAgY29uc3QgZXZlbnQgPSBnZXRFdmVudEZvckVudmVsb3BlSXRlbShpdGVtLCB0eXBlKTsKICAgICAgICBvcHRpb25zLnJlY29yZERyb3BwZWRFdmVudChyZWFzb24sIGVudmVsb3BlSXRlbVR5cGVUb0RhdGFDYXRlZ29yeSh0eXBlKSwgZXZlbnQpOwogICAgICB9KTsKICAgIH07CgogICAgY29uc3QgcmVxdWVzdFRhc2sgPSAoKSA9PgogICAgICBtYWtlUmVxdWVzdCh7IGJvZHk6IHNlcmlhbGl6ZUVudmVsb3BlKGZpbHRlcmVkRW52ZWxvcGUsIG9wdGlvbnMudGV4dEVuY29kZXIpIH0pLnRoZW4oCiAgICAgICAgcmVzcG9uc2UgPT4gewogICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB0aHJvdyBvbiBOT0sgcmVzcG9uc2VzLCBidXQgd2Ugd2FudCB0byBhdCBsZWFzdCBsb2cgdGhlbQogICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IHVuZGVmaW5lZCAmJiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXNwb25zZS5zdGF0dXNDb2RlID49IDMwMCkpIHsKICAgICAgICAgICAgREVCVUdfQlVJTEQgJiYgbG9nZ2VyLndhcm4oYFNlbnRyeSByZXNwb25kZWQgd2l0aCBzdGF0dXMgY29kZSAke3Jlc3BvbnNlLnN0YXR1c0NvZGV9IHRvIHNlbnQgZXZlbnQuYCk7CiAgICAgICAgICB9CgogICAgICAgICAgcmF0ZUxpbWl0cyA9IHVwZGF0ZVJhdGVMaW1pdHMocmF0ZUxpbWl0cywgcmVzcG9uc2UpOwogICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0sCiAgICAgICAgZXJyb3IgPT4gewogICAgICAgICAgcmVjb3JkRW52ZWxvcGVMb3NzKCduZXR3b3JrX2Vycm9yJyk7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9LAogICAgICApOwoKICAgIHJldHVybiBidWZmZXIuYWRkKHJlcXVlc3RUYXNrKS50aGVuKAogICAgICByZXN1bHQgPT4gcmVzdWx0LAogICAgICBlcnJvciA9PiB7CiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2VudHJ5RXJyb3IpIHsKICAgICAgICAgIERFQlVHX0JVSUxEICYmIGxvZ2dlci5lcnJvcignU2tpcHBlZCBzZW5kaW5nIGV2ZW50IGJlY2F1c2UgYnVmZmVyIGlzIGZ1bGwuJyk7CiAgICAgICAgICByZWNvcmRFbnZlbG9wZUxvc3MoJ3F1ZXVlX292ZXJmbG93Jyk7CiAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRTeW5jUHJvbWlzZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgIH0sCiAgICApOwogIH0KCiAgLy8gV2UgdXNlIHRoaXMgdG8gaWRlbnRpZmlmeSBpZiB0aGUgdHJhbnNwb3J0IGlzIHRoZSBiYXNlIHRyYW5zcG9ydAogIC8vIFRPRE8gKHY4KTogUmVtb3ZlIHRoaXMgYWdhaW4gYXMgd2UnbGwgbm8gbG9uZ2VyIG5lZWQgaXQKICBzZW5kLl9fc2VudHJ5X19iYXNlVHJhbnNwb3J0X18gPSB0cnVlOwoKICByZXR1cm4gewogICAgc2VuZCwKICAgIGZsdXNoLAogIH07Cn0KCmZ1bmN0aW9uIGdldEV2ZW50Rm9yRW52ZWxvcGVJdGVtKGl0ZW0sIHR5cGUpIHsKICBpZiAodHlwZSAhPT0gJ2V2ZW50JyAmJiB0eXBlICE9PSAndHJhbnNhY3Rpb24nKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyAoaXRlbSApWzFdIDogdW5kZWZpbmVkOwp9CgovKiogbm9ybWFsaXplcyBXaW5kb3dzIHBhdGhzICovCmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHBhdGgpIHsKICByZXR1cm4gcGF0aAogICAgLnJlcGxhY2UoL15bQS1aXTovLCAnJykgLy8gcmVtb3ZlIFdpbmRvd3Mtc3R5bGUgcHJlZml4CiAgICAucmVwbGFjZSgvXFwvZywgJy8nKTsgLy8gcmVwbGFjZSBhbGwgYFxgIGluc3RhbmNlcyB3aXRoIGAvYAp9CgovKiogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgbW9kdWxlIG5hbWUgZnJvbSBhIGZpbGVuYW1lICovCmZ1bmN0aW9uIGNyZWF0ZUdldE1vZHVsZUZyb21GaWxlbmFtZSgKICBiYXNlUGF0aCA9IHByb2Nlc3MuYXJndlsxXSA/IGRpcm5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6IHByb2Nlc3MuY3dkKCksCiAgaXNXaW5kb3dzID0gc2VwID09PSAnXFwnLAopIHsKICBjb25zdCBub3JtYWxpemVkQmFzZSA9IGlzV2luZG93cyA/IG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGJhc2VQYXRoKSA6IGJhc2VQYXRoOwoKICByZXR1cm4gKGZpbGVuYW1lKSA9PiB7CiAgICBpZiAoIWZpbGVuYW1lKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBjb25zdCBub3JtYWxpemVkRmlsZW5hbWUgPSBpc1dpbmRvd3MgPyBub3JtYWxpemVXaW5kb3dzUGF0aChmaWxlbmFtZSkgOiBmaWxlbmFtZTsKCiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0CiAgICBsZXQgeyBkaXIsIGJhc2U6IGZpbGUsIGV4dCB9ID0gcG9zaXgucGFyc2Uobm9ybWFsaXplZEZpbGVuYW1lKTsKCiAgICBpZiAoZXh0ID09PSAnLmpzJyB8fCBleHQgPT09ICcubWpzJyB8fCBleHQgPT09ICcuY2pzJykgewogICAgICBmaWxlID0gZmlsZS5zbGljZSgwLCBleHQubGVuZ3RoICogLTEpOwogICAgfQoKICAgIGlmICghZGlyKSB7CiAgICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlcgogICAgICBkaXIgPSAnLic7CiAgICB9CgogICAgY29uc3QgbiA9IGRpci5sYXN0SW5kZXhPZignL25vZGVfbW9kdWxlcycpOwogICAgaWYgKG4gPiAtMSkgewogICAgICByZXR1cm4gYCR7ZGlyLnNsaWNlKG4gKyAxNCkucmVwbGFjZSgvXC8vZywgJy4nKX06JHtmaWxlfWA7CiAgICB9CgogICAgLy8gTGV0J3Mgc2VlIGlmIGl0J3MgYSBwYXJ0IG9mIHRoZSBtYWluIG1vZHVsZQogICAgLy8gVG8gYmUgYSBwYXJ0IG9mIG1haW4gbW9kdWxlLCBpdCBoYXMgdG8gc2hhcmUgdGhlIHNhbWUgYmFzZQogICAgaWYgKGRpci5zdGFydHNXaXRoKG5vcm1hbGl6ZWRCYXNlKSkgewogICAgICBsZXQgbW9kdWxlTmFtZSA9IGRpci5zbGljZShub3JtYWxpemVkQmFzZS5sZW5ndGggKyAxKS5yZXBsYWNlKC9cLy9nLCAnLicpOwoKICAgICAgaWYgKG1vZHVsZU5hbWUpIHsKICAgICAgICBtb2R1bGVOYW1lICs9ICc6JzsKICAgICAgfQogICAgICBtb2R1bGVOYW1lICs9IGZpbGU7CgogICAgICByZXR1cm4gbW9kdWxlTmFtZTsKICAgIH0KCiAgICByZXR1cm4gZmlsZTsKICB9Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlJDIobGhzLCByaHNGbikgeyBpZiAobGhzICE9IG51bGwpIHsgcmV0dXJuIGxoczsgfSBlbHNlIHsgcmV0dXJuIHJoc0ZuKCk7IH0gfS8qKgogKiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgZm9ya2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1Rvb1RhbGxOYXRlL3Byb3h5LWFnZW50cy90cmVlL2IxMzMyOTVmZDE2ZjY0NzU1NzhiNmIxNWJkOWI0ZTMzZWNiMGQwYjcKICogV2l0aCB0aGUgZm9sbG93aW5nIGxpY2VuY2U6CiAqCiAqIChUaGUgTUlUIExpY2Vuc2UpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMyBOYXRoYW4gUmFqbGljaCA8bmF0aGFuQHRvb3RhbGxuYXRlLm5ldD4qCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOioKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuKgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwoKY29uc3QgSU5URVJOQUwgPSBTeW1ib2woJ0FnZW50QmFzZUludGVybmFsU3RhdGUnKTsKCmNsYXNzIEFnZW50IGV4dGVuZHMgaHR0cC5BZ2VudCB7CgogIC8vIFNldCBieSBgaHR0cC5BZ2VudGAgLSBtaXNzaW5nIGZyb20gYEB0eXBlcy9ub2RlYAoKICBjb25zdHJ1Y3RvcihvcHRzKSB7CiAgICBzdXBlcihvcHRzKTsKICAgIHRoaXNbSU5URVJOQUxdID0ge307CiAgfQoKICAvKioKICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFuIGBodHRwYCBvciBgaHR0cHNgIHJlcXVlc3QuCiAgICovCiAgaXNTZWN1cmVFbmRwb2ludChvcHRpb25zKSB7CiAgICBpZiAob3B0aW9ucykgewogICAgICAvLyBGaXJzdCBjaGVjayB0aGUgYHNlY3VyZUVuZHBvaW50YCBwcm9wZXJ0eSBleHBsaWNpdGx5LCBzaW5jZSB0aGlzCiAgICAgIC8vIG1lYW5zIHRoYXQgYSBwYXJlbnQgYEFnZW50YCBpcyAicGFzc2luZyB0aHJvdWdoIiB0byB0aGlzIGluc3RhbmNlLgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzCiAgICAgIGlmICh0eXBlb2YgKG9wdGlvbnMgKS5zZWN1cmVFbmRwb2ludCA9PT0gJ2Jvb2xlYW4nKSB7CiAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2VjdXJlRW5kcG9pbnQ7CiAgICAgIH0KCiAgICAgIC8vIElmIG5vIGV4cGxpY2l0IGBzZWN1cmVgIGVuZHBvaW50LCBjaGVjayBpZiBgcHJvdG9jb2xgIHByb3BlcnR5IGlzCiAgICAgIC8vIHNldC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgdGhlIGNhc2Ugc2luY2UgdXNpbmcgYSBmdWxsIHN0cmluZyBVUkwKICAgICAgLy8gb3IgYFVSTGAgaW5zdGFuY2Ugc2hvdWxkIGJlIHRoZSBtb3N0IGNvbW1vbiB1c2FnZS4KICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnByb3RvY29sID09PSAnc3RyaW5nJykgewogICAgICAgIHJldHVybiBvcHRpb25zLnByb3RvY29sID09PSAnaHR0cHM6JzsKICAgICAgfQogICAgfQoKICAgIC8vIEZpbmFsbHksIGlmIG5vIGBwcm90b2NvbGAgcHJvcGVydHkgd2FzIHNldCwgdGhlbiBmYWxsIGJhY2sgdG8KICAgIC8vIGNoZWNraW5nIHRoZSBzdGFjayB0cmFjZSBvZiB0aGUgY3VycmVudCBjYWxsIHN0YWNrLCBhbmQgdHJ5IHRvCiAgICAvLyBkZXRlY3QgdGhlICJodHRwcyIgbW9kdWxlLgogICAgY29uc3QgeyBzdGFjayB9ID0gbmV3IEVycm9yKCk7CiAgICBpZiAodHlwZW9mIHN0YWNrICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlOwogICAgcmV0dXJuIHN0YWNrLnNwbGl0KCdcbicpLnNvbWUobCA9PiBsLmluZGV4T2YoJyhodHRwcy5qczonKSAhPT0gLTEgfHwgbC5pbmRleE9mKCdub2RlOmh0dHBzOicpICE9PSAtMSk7CiAgfQoKICBjcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYikgewogICAgY29uc3QgY29ubmVjdE9wdHMgPSB7CiAgICAgIC4uLm9wdGlvbnMsCiAgICAgIHNlY3VyZUVuZHBvaW50OiB0aGlzLmlzU2VjdXJlRW5kcG9pbnQob3B0aW9ucyksCiAgICB9OwogICAgUHJvbWlzZS5yZXNvbHZlKCkKICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25uZWN0KHJlcSwgY29ubmVjdE9wdHMpKQogICAgICAudGhlbihzb2NrZXQgPT4gewogICAgICAgIGlmIChzb2NrZXQgaW5zdGFuY2VvZiBodHRwLkFnZW50KSB7CiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBhZGRSZXF1ZXN0KClgIGlzbid0IGRlZmluZWQgaW4gYEB0eXBlcy9ub2RlYAogICAgICAgICAgcmV0dXJuIHNvY2tldC5hZGRSZXF1ZXN0KHJlcSwgY29ubmVjdE9wdHMpOwogICAgICAgIH0KICAgICAgICB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0ID0gc29ja2V0OwogICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYGNyZWF0ZVNvY2tldCgpYCBpc24ndCBkZWZpbmVkIGluIGBAdHlwZXMvbm9kZWAKICAgICAgICBzdXBlci5jcmVhdGVTb2NrZXQocmVxLCBvcHRpb25zLCBjYik7CiAgICAgIH0sIGNiKTsKICB9CgogIGNyZWF0ZUNvbm5lY3Rpb24oKSB7CiAgICBjb25zdCBzb2NrZXQgPSB0aGlzW0lOVEVSTkFMXS5jdXJyZW50U29ja2V0OwogICAgdGhpc1tJTlRFUk5BTF0uY3VycmVudFNvY2tldCA9IHVuZGVmaW5lZDsKICAgIGlmICghc29ja2V0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gc29ja2V0IHdhcyByZXR1cm5lZCBpbiB0aGUgYGNvbm5lY3QoKWAgZnVuY3Rpb24nKTsKICAgIH0KICAgIHJldHVybiBzb2NrZXQ7CiAgfQoKICBnZXQgZGVmYXVsdFBvcnQoKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLmRlZmF1bHRQb3J0LCAoKSA9PiAoICh0aGlzLnByb3RvY29sID09PSAnaHR0cHM6JyA/IDQ0MyA6IDgwKSkpOwogIH0KCiAgc2V0IGRlZmF1bHRQb3J0KHYpIHsKICAgIGlmICh0aGlzW0lOVEVSTkFMXSkgewogICAgICB0aGlzW0lOVEVSTkFMXS5kZWZhdWx0UG9ydCA9IHY7CiAgICB9CiAgfQoKICBnZXQgcHJvdG9jb2woKSB7CiAgICByZXR1cm4gX251bGxpc2hDb2FsZXNjZSQyKHRoaXNbSU5URVJOQUxdLnByb3RvY29sLCAoKSA9PiAoICh0aGlzLmlzU2VjdXJlRW5kcG9pbnQoKSA/ICdodHRwczonIDogJ2h0dHA6JykpKTsKICB9CgogIHNldCBwcm90b2NvbCh2KSB7CiAgICBpZiAodGhpc1tJTlRFUk5BTF0pIHsKICAgICAgdGhpc1tJTlRFUk5BTF0ucHJvdG9jb2wgPSB2OwogICAgfQogIH0KfQoKZnVuY3Rpb24gZGVidWckMSguLi5hcmdzKSB7CiAgbG9nZ2VyLmxvZygnW2h0dHBzLXByb3h5LWFnZW50OnBhcnNlLXByb3h5LXJlc3BvbnNlXScsIC4uLmFyZ3MpOwp9CgpmdW5jdGlvbiBwYXJzZVByb3h5UmVzcG9uc2Uoc29ja2V0KSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIC8vIHdlIG5lZWQgdG8gYnVmZmVyIGFueSBIVFRQIHRyYWZmaWMgdGhhdCBoYXBwZW5zIHdpdGggdGhlIHByb3h5IGJlZm9yZSB3ZSBnZXQKICAgIC8vIHRoZSBDT05ORUNUIHJlc3BvbnNlLCBzbyB0aGF0IGlmIHRoZSByZXNwb25zZSBpcyBhbnl0aGluZyBvdGhlciB0aGFuIGFuICIyMDAiCiAgICAvLyByZXNwb25zZSBjb2RlLCB0aGVuIHdlIGNhbiByZS1wbGF5IHRoZSAiZGF0YSIgZXZlbnRzIG9uIHRoZSBzb2NrZXQgb25jZSB0aGUKICAgIC8vIEhUVFAgcGFyc2VyIGlzIGhvb2tlZCB1cC4uLgogICAgbGV0IGJ1ZmZlcnNMZW5ndGggPSAwOwogICAgY29uc3QgYnVmZmVycyA9IFtdOwoKICAgIGZ1bmN0aW9uIHJlYWQoKSB7CiAgICAgIGNvbnN0IGIgPSBzb2NrZXQucmVhZCgpOwogICAgICBpZiAoYikgb25kYXRhKGIpOwogICAgICBlbHNlIHNvY2tldC5vbmNlKCdyZWFkYWJsZScsIHJlYWQpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpOwogICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCByZWFkKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVuZCgpIHsKICAgICAgY2xlYW51cCgpOwogICAgICBkZWJ1ZyQxKCdvbmVuZCcpOwogICAgICByZWplY3QobmV3IEVycm9yKCdQcm94eSBjb25uZWN0aW9uIGVuZGVkIGJlZm9yZSByZWNlaXZpbmcgQ09OTkVDVCByZXNwb25zZScpKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmVycm9yKGVycikgewogICAgICBjbGVhbnVwKCk7CiAgICAgIGRlYnVnJDEoJ29uZXJyb3IgJW8nLCBlcnIpOwogICAgICByZWplY3QoZXJyKTsKICAgIH0KCiAgICBmdW5jdGlvbiBvbmRhdGEoYikgewogICAgICBidWZmZXJzLnB1c2goYik7CiAgICAgIGJ1ZmZlcnNMZW5ndGggKz0gYi5sZW5ndGg7CgogICAgICBjb25zdCBidWZmZXJlZCA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgYnVmZmVyc0xlbmd0aCk7CiAgICAgIGNvbnN0IGVuZE9mSGVhZGVycyA9IGJ1ZmZlcmVkLmluZGV4T2YoJ1xyXG5cclxuJyk7CgogICAgICBpZiAoZW5kT2ZIZWFkZXJzID09PSAtMSkgewogICAgICAgIC8vIGtlZXAgYnVmZmVyaW5nCiAgICAgICAgZGVidWckMSgnaGF2ZSBub3QgcmVjZWl2ZWQgZW5kIG9mIEhUVFAgaGVhZGVycyB5ZXQuLi4nKTsKICAgICAgICByZWFkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBjb25zdCBoZWFkZXJQYXJ0cyA9IGJ1ZmZlcmVkLnNsaWNlKDAsIGVuZE9mSGVhZGVycykudG9TdHJpbmcoJ2FzY2lpJykuc3BsaXQoJ1xyXG4nKTsKICAgICAgY29uc3QgZmlyc3RMaW5lID0gaGVhZGVyUGFydHMuc2hpZnQoKTsKICAgICAgaWYgKCFmaXJzdExpbmUpIHsKICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdObyBoZWFkZXIgcmVjZWl2ZWQgZnJvbSBwcm94eSBDT05ORUNUIHJlc3BvbnNlJykpOwogICAgICB9CiAgICAgIGNvbnN0IGZpcnN0TGluZVBhcnRzID0gZmlyc3RMaW5lLnNwbGl0KCcgJyk7CiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSArZmlyc3RMaW5lUGFydHNbMV07CiAgICAgIGNvbnN0IHN0YXR1c1RleHQgPSBmaXJzdExpbmVQYXJ0cy5zbGljZSgyKS5qb2luKCcgJyk7CiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7fTsKICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgaGVhZGVyUGFydHMpIHsKICAgICAgICBpZiAoIWhlYWRlcikgY29udGludWU7CiAgICAgICAgY29uc3QgZmlyc3RDb2xvbiA9IGhlYWRlci5pbmRleE9mKCc6Jyk7CiAgICAgICAgaWYgKGZpcnN0Q29sb24gPT09IC0xKSB7CiAgICAgICAgICBzb2NrZXQuZGVzdHJveSgpOwogICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYEludmFsaWQgaGVhZGVyIGZyb20gcHJveHkgQ09OTkVDVCByZXNwb25zZTogIiR7aGVhZGVyfSJgKSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGtleSA9IGhlYWRlci5zbGljZSgwLCBmaXJzdENvbG9uKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVyLnNsaWNlKGZpcnN0Q29sb24gKyAxKS50cmltU3RhcnQoKTsKICAgICAgICBjb25zdCBjdXJyZW50ID0gaGVhZGVyc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGhlYWRlcnNba2V5XSA9IFtjdXJyZW50LCB2YWx1ZV07CiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpKSB7CiAgICAgICAgICBjdXJyZW50LnB1c2godmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVidWckMSgnZ290IHByb3h5IHNlcnZlciByZXNwb25zZTogJW8gJW8nLCBmaXJzdExpbmUsIGhlYWRlcnMpOwogICAgICBjbGVhbnVwKCk7CiAgICAgIHJlc29sdmUoewogICAgICAgIGNvbm5lY3Q6IHsKICAgICAgICAgIHN0YXR1c0NvZGUsCiAgICAgICAgICBzdGF0dXNUZXh0LAogICAgICAgICAgaGVhZGVycywKICAgICAgICB9LAogICAgICAgIGJ1ZmZlcmVkLAogICAgICB9KTsKICAgIH0KCiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25lcnJvcik7CiAgICBzb2NrZXQub24oJ2VuZCcsIG9uZW5kKTsKCiAgICByZWFkKCk7CiAgfSk7Cn0KCmZ1bmN0aW9uIF9udWxsaXNoQ29hbGVzY2UkMShsaHMsIHJoc0ZuKSB7IGlmIChsaHMgIT0gbnVsbCkgeyByZXR1cm4gbGhzOyB9IGVsc2UgeyByZXR1cm4gcmhzRm4oKTsgfSB9IGZ1bmN0aW9uIF9vcHRpb25hbENoYWluJDEob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KCmZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3MpIHsKICBsb2dnZXIubG9nKCdbaHR0cHMtcHJveHktYWdlbnRdJywgLi4uYXJncyk7Cn0KCi8qKgogKiBUaGUgYEh0dHBzUHJveHlBZ2VudGAgaW1wbGVtZW50cyBhbiBIVFRQIEFnZW50IHN1YmNsYXNzIHRoYXQgY29ubmVjdHMgdG8KICogdGhlIHNwZWNpZmllZCAiSFRUUChzKSBwcm94eSBzZXJ2ZXIiIGluIG9yZGVyIHRvIHByb3h5IEhUVFBTIHJlcXVlc3RzLgogKgogKiBPdXRnb2luZyBIVFRQIHJlcXVlc3RzIGFyZSBmaXJzdCB0dW5uZWxlZCB0aHJvdWdoIHRoZSBwcm94eSBzZXJ2ZXIgdXNpbmcgdGhlCiAqIGBDT05ORUNUYCBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciwKICogYW5kIHRoZW4gdGhlIHByb3h5IHNlcnZlciBjb25uZWN0cyB0byB0aGUgZGVzdGluYXRpb24gdGFyZ2V0IGFuZCBpc3N1ZXMgdGhlCiAqIEhUVFAgcmVxdWVzdCBmcm9tIHRoZSBwcm94eSBzZXJ2ZXIuCiAqCiAqIGBodHRwczpgIHJlcXVlc3RzIGhhdmUgdGhlaXIgc29ja2V0IGNvbm5lY3Rpb24gdXBncmFkZWQgdG8gVExTIG9uY2UKICogdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHByb3h5IHNlcnZlciBoYXMgYmVlbiBlc3RhYmxpc2hlZC4KICovCmNsYXNzIEh0dHBzUHJveHlBZ2VudCBleHRlbmRzIEFnZW50IHsKICBzdGF0aWMgX19pbml0U3RhdGljKCkge3RoaXMucHJvdG9jb2xzID0gWydodHRwJywgJ2h0dHBzJ107IH0KCiAgY29uc3RydWN0b3IocHJveHksIG9wdHMpIHsKICAgIHN1cGVyKG9wdHMpOwogICAgdGhpcy5vcHRpb25zID0ge307CiAgICB0aGlzLnByb3h5ID0gdHlwZW9mIHByb3h5ID09PSAnc3RyaW5nJyA/IG5ldyBVUkwocHJveHkpIDogcHJveHk7CiAgICB0aGlzLnByb3h5SGVhZGVycyA9IF9udWxsaXNoQ29hbGVzY2UkMShfb3B0aW9uYWxDaGFpbiQxKFtvcHRzLCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5oZWFkZXJzXSksICgpID0+ICgge30pKTsKICAgIGRlYnVnKCdDcmVhdGluZyBuZXcgSHR0cHNQcm94eUFnZW50IGluc3RhbmNlOiAlbycsIHRoaXMucHJveHkuaHJlZik7CgogICAgLy8gVHJpbSBvZmYgdGhlIGJyYWNrZXRzIGZyb20gSVB2NiBhZGRyZXNzZXMKICAgIGNvbnN0IGhvc3QgPSAodGhpcy5wcm94eS5ob3N0bmFtZSB8fCB0aGlzLnByb3h5Lmhvc3QpLnJlcGxhY2UoL15cW3xcXSQvZywgJycpOwogICAgY29uc3QgcG9ydCA9IHRoaXMucHJveHkucG9ydCA/IHBhcnNlSW50KHRoaXMucHJveHkucG9ydCwgMTApIDogdGhpcy5wcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyA0NDMgOiA4MDsKICAgIHRoaXMuY29ubmVjdE9wdHMgPSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gbmVnb3RpYXRlIGh0dHAvMS4xIGZvciBwcm94eSBzZXJ2ZXJzIHRoYXQgc3VwcG9ydCBodHRwLzIKICAgICAgQUxQTlByb3RvY29sczogWydodHRwLzEuMSddLAogICAgICAuLi4ob3B0cyA/IG9taXQob3B0cywgJ2hlYWRlcnMnKSA6IG51bGwpLAogICAgICBob3N0LAogICAgICBwb3J0LAogICAgfTsKICB9CgogIC8qKgogICAqIENhbGxlZCB3aGVuIHRoZSBub2RlLWNvcmUgSFRUUCBjbGllbnQgbGlicmFyeSBpcyBjcmVhdGluZyBhCiAgICogbmV3IEhUVFAgcmVxdWVzdC4KICAgKi8KICBhc3luYyBjb25uZWN0KHJlcSwgb3B0cykgewogICAgY29uc3QgeyBwcm94eSB9ID0gdGhpczsKCiAgICBpZiAoIW9wdHMuaG9zdCkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdObyAiaG9zdCIgcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvLyBDcmVhdGUgYSBzb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgcHJveHkgc2VydmVyLgogICAgbGV0IHNvY2tldDsKICAgIGlmIChwcm94eS5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHsKICAgICAgZGVidWcoJ0NyZWF0aW5nIGB0bHMuU29ja2V0YDogJW8nLCB0aGlzLmNvbm5lY3RPcHRzKTsKICAgICAgY29uc3Qgc2VydmVybmFtZSA9IHRoaXMuY29ubmVjdE9wdHMuc2VydmVybmFtZSB8fCB0aGlzLmNvbm5lY3RPcHRzLmhvc3Q7CiAgICAgIHNvY2tldCA9IHRscy5jb25uZWN0KHsKICAgICAgICAuLi50aGlzLmNvbm5lY3RPcHRzLAogICAgICAgIHNlcnZlcm5hbWU6IHNlcnZlcm5hbWUgJiYgbmV0LmlzSVAoc2VydmVybmFtZSkgPyB1bmRlZmluZWQgOiBzZXJ2ZXJuYW1lLAogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGRlYnVnKCdDcmVhdGluZyBgbmV0LlNvY2tldGA6ICVvJywgdGhpcy5jb25uZWN0T3B0cyk7CiAgICAgIHNvY2tldCA9IG5ldC5jb25uZWN0KHRoaXMuY29ubmVjdE9wdHMpOwogICAgfQoKICAgIGNvbnN0IGhlYWRlcnMgPQogICAgICB0eXBlb2YgdGhpcy5wcm94eUhlYWRlcnMgPT09ICdmdW5jdGlvbicgPyB0aGlzLnByb3h5SGVhZGVycygpIDogeyAuLi50aGlzLnByb3h5SGVhZGVycyB9OwogICAgY29uc3QgaG9zdCA9IG5ldC5pc0lQdjYob3B0cy5ob3N0KSA/IGBbJHtvcHRzLmhvc3R9XWAgOiBvcHRzLmhvc3Q7CiAgICBsZXQgcGF5bG9hZCA9IGBDT05ORUNUICR7aG9zdH06JHtvcHRzLnBvcnR9IEhUVFAvMS4xXHJcbmA7CgogICAgLy8gSW5qZWN0IHRoZSBgUHJveHktQXV0aG9yaXphdGlvbmAgaGVhZGVyIGlmIG5lY2Vzc2FyeS4KICAgIGlmIChwcm94eS51c2VybmFtZSB8fCBwcm94eS5wYXNzd29yZCkgewogICAgICBjb25zdCBhdXRoID0gYCR7ZGVjb2RlVVJJQ29tcG9uZW50KHByb3h5LnVzZXJuYW1lKX06JHtkZWNvZGVVUklDb21wb25lbnQocHJveHkucGFzc3dvcmQpfWA7CiAgICAgIGhlYWRlcnNbJ1Byb3h5LUF1dGhvcml6YXRpb24nXSA9IGBCYXNpYyAke0J1ZmZlci5mcm9tKGF1dGgpLnRvU3RyaW5nKCdiYXNlNjQnKX1gOwogICAgfQoKICAgIGhlYWRlcnMuSG9zdCA9IGAke2hvc3R9OiR7b3B0cy5wb3J0fWA7CgogICAgaWYgKCFoZWFkZXJzWydQcm94eS1Db25uZWN0aW9uJ10pIHsKICAgICAgaGVhZGVyc1snUHJveHktQ29ubmVjdGlvbiddID0gdGhpcy5rZWVwQWxpdmUgPyAnS2VlcC1BbGl2ZScgOiAnY2xvc2UnOwogICAgfQogICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7CiAgICAgIHBheWxvYWQgKz0gYCR7bmFtZX06ICR7aGVhZGVyc1tuYW1lXX1cclxuYDsKICAgIH0KCiAgICBjb25zdCBwcm94eVJlc3BvbnNlUHJvbWlzZSA9IHBhcnNlUHJveHlSZXNwb25zZShzb2NrZXQpOwoKICAgIHNvY2tldC53cml0ZShgJHtwYXlsb2FkfVxyXG5gKTsKCiAgICBjb25zdCB7IGNvbm5lY3QsIGJ1ZmZlcmVkIH0gPSBhd2FpdCBwcm94eVJlc3BvbnNlUHJvbWlzZTsKICAgIHJlcS5lbWl0KCdwcm94eUNvbm5lY3QnLCBjb25uZWN0KTsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQKICAgIC8vIEB0cy1pZ25vcmUgTm90IEV2ZW50RW1pdHRlciBpbiBOb2RlIHR5cGVzCiAgICB0aGlzLmVtaXQoJ3Byb3h5Q29ubmVjdCcsIGNvbm5lY3QsIHJlcSk7CgogICAgaWYgKGNvbm5lY3Quc3RhdHVzQ29kZSA9PT0gMjAwKSB7CiAgICAgIHJlcS5vbmNlKCdzb2NrZXQnLCByZXN1bWUpOwoKICAgICAgaWYgKG9wdHMuc2VjdXJlRW5kcG9pbnQpIHsKICAgICAgICAvLyBUaGUgcHJveHkgaXMgY29ubmVjdGluZyB0byBhIFRMUyBzZXJ2ZXIsIHNvIHVwZ3JhZGUKICAgICAgICAvLyB0aGlzIHNvY2tldCBjb25uZWN0aW9uIHRvIGEgVExTIGNvbm5lY3Rpb24uCiAgICAgICAgZGVidWcoJ1VwZ3JhZGluZyBzb2NrZXQgY29ubmVjdGlvbiB0byBUTFMnKTsKICAgICAgICBjb25zdCBzZXJ2ZXJuYW1lID0gb3B0cy5zZXJ2ZXJuYW1lIHx8IG9wdHMuaG9zdDsKICAgICAgICByZXR1cm4gdGxzLmNvbm5lY3QoewogICAgICAgICAgLi4ub21pdChvcHRzLCAnaG9zdCcsICdwYXRoJywgJ3BvcnQnKSwKICAgICAgICAgIHNvY2tldCwKICAgICAgICAgIHNlcnZlcm5hbWU6IG5ldC5pc0lQKHNlcnZlcm5hbWUpID8gdW5kZWZpbmVkIDogc2VydmVybmFtZSwKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgcmV0dXJuIHNvY2tldDsKICAgIH0KCiAgICAvLyBTb21lIG90aGVyIHN0YXR1cyBjb2RlIHRoYXQncyBub3QgMjAwLi4uIG5lZWQgdG8gcmUtcGxheSB0aGUgSFRUUAogICAgLy8gaGVhZGVyICJkYXRhIiBldmVudHMgb250byB0aGUgc29ja2V0IG9uY2UgdGhlIEhUVFAgbWFjaGluZXJ5IGlzCiAgICAvLyBhdHRhY2hlZCBzbyB0aGF0IHRoZSBub2RlIGNvcmUgYGh0dHBgIGNhbiBwYXJzZSBhbmQgaGFuZGxlIHRoZQogICAgLy8gZXJyb3Igc3RhdHVzIGNvZGUuCgogICAgLy8gQ2xvc2UgdGhlIG9yaWdpbmFsIHNvY2tldCwgYW5kIGEgbmV3ICJmYWtlIiBzb2NrZXQgaXMgcmV0dXJuZWQKICAgIC8vIGluc3RlYWQsIHNvIHRoYXQgdGhlIHByb3h5IGRvZXNuJ3QgZ2V0IHRoZSBIVFRQIHJlcXVlc3QKICAgIC8vIHdyaXR0ZW4gdG8gaXQgKHdoaWNoIG1heSBjb250YWluIGBBdXRob3JpemF0aW9uYCBoZWFkZXJzIG9yIG90aGVyCiAgICAvLyBzZW5zaXRpdmUgZGF0YSkuCiAgICAvLwogICAgLy8gU2VlOiBodHRwczovL2hhY2tlcm9uZS5jb20vcmVwb3J0cy81NDE1MDIKICAgIHNvY2tldC5kZXN0cm95KCk7CgogICAgY29uc3QgZmFrZVNvY2tldCA9IG5ldyBuZXQuU29ja2V0KHsgd3JpdGFibGU6IGZhbHNlIH0pOwogICAgZmFrZVNvY2tldC5yZWFkYWJsZSA9IHRydWU7CgogICAgLy8gTmVlZCB0byB3YWl0IGZvciB0aGUgInNvY2tldCIgZXZlbnQgdG8gcmUtcGxheSB0aGUgImRhdGEiIGV2ZW50cy4KICAgIHJlcS5vbmNlKCdzb2NrZXQnLCAocykgPT4gewogICAgICBkZWJ1ZygnUmVwbGF5aW5nIHByb3h5IGJ1ZmZlciBmb3IgZmFpbGVkIHJlcXVlc3QnKTsKICAgICAgLy8gUmVwbGF5IHRoZSAiYnVmZmVyZWQiIEJ1ZmZlciBvbnRvIHRoZSBmYWtlIGBzb2NrZXRgLCBzaW5jZSBhdAogICAgICAvLyB0aGlzIHBvaW50IHRoZSBIVFRQIG1vZHVsZSBtYWNoaW5lcnkgaGFzIGJlZW4gaG9va2VkIHVwIGZvcgogICAgICAvLyB0aGUgdXNlci4KICAgICAgcy5wdXNoKGJ1ZmZlcmVkKTsKICAgICAgcy5wdXNoKG51bGwpOwogICAgfSk7CgogICAgcmV0dXJuIGZha2VTb2NrZXQ7CiAgfQp9IEh0dHBzUHJveHlBZ2VudC5fX2luaXRTdGF0aWMoKTsKCmZ1bmN0aW9uIHJlc3VtZShzb2NrZXQpIHsKICBzb2NrZXQucmVzdW1lKCk7Cn0KCmZ1bmN0aW9uIG9taXQoCiAgb2JqLAogIC4uLmtleXMKKQoKIHsKICBjb25zdCByZXQgPSB7fQoKOwogIGxldCBrZXk7CiAgZm9yIChrZXkgaW4gb2JqKSB7CiAgICBpZiAoIWtleXMuaW5jbHVkZXMoa2V5KSkgewogICAgICByZXRba2V5XSA9IG9ialtrZXldOwogICAgfQogIH0KICByZXR1cm4gcmV0Owp9CgpmdW5jdGlvbiBfbnVsbGlzaENvYWxlc2NlKGxocywgcmhzRm4pIHsgaWYgKGxocyAhPSBudWxsKSB7IHJldHVybiBsaHM7IH0gZWxzZSB7IHJldHVybiByaHNGbigpOyB9IH0KLy8gRXN0aW1hdGVkIG1heGltdW0gc2l6ZSBmb3IgcmVhc29uYWJsZSBzdGFuZGFsb25lIGV2ZW50CmNvbnN0IEdaSVBfVEhSRVNIT0xEID0gMTAyNCAqIDMyOwoKLyoqCiAqIEdldHMgYSBzdHJlYW0gZnJvbSBhIFVpbnQ4QXJyYXkgb3Igc3RyaW5nCiAqIFJlYWRhYmxlLmZyb20gaXMgaWRlYWwgYnV0IHdhcyBhZGRlZCBpbiBub2RlLmpzIHYxMi4zLjAgYW5kIHYxMC4xNy4wCiAqLwpmdW5jdGlvbiBzdHJlYW1Gcm9tQm9keShib2R5KSB7CiAgcmV0dXJuIG5ldyBSZWFkYWJsZSh7CiAgICByZWFkKCkgewogICAgICB0aGlzLnB1c2goYm9keSk7CiAgICAgIHRoaXMucHVzaChudWxsKTsKICAgIH0sCiAgfSk7Cn0KCi8qKgogKiBDcmVhdGVzIGEgVHJhbnNwb3J0IHRoYXQgdXNlcyBuYXRpdmUgdGhlIG5hdGl2ZSAnaHR0cCcgYW5kICdodHRwcycgbW9kdWxlcyB0byBzZW5kIGV2ZW50cyB0byBTZW50cnkuCiAqLwpmdW5jdGlvbiBtYWtlTm9kZVRyYW5zcG9ydChvcHRpb25zKSB7CiAgbGV0IHVybFNlZ21lbnRzOwoKICB0cnkgewogICAgdXJsU2VnbWVudHMgPSBuZXcgVVJMKG9wdGlvbnMudXJsKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlU2FuZGJveCgoKSA9PiB7CiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICAgIGNvbnNvbGUud2FybigKICAgICAgICAnW0BzZW50cnkvbm9kZV06IEludmFsaWQgZHNuIG9yIHR1bm5lbCBvcHRpb24sIHdpbGwgbm90IHNlbmQgYW55IGV2ZW50cy4gVGhlIHR1bm5lbCBvcHRpb24gbXVzdCBiZSBhIGZ1bGwgVVJMIHdoZW4gdXNlZC4nLAogICAgICApOwogICAgfSk7CiAgICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsICgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpOwogIH0KCiAgY29uc3QgaXNIdHRwcyA9IHVybFNlZ21lbnRzLnByb3RvY29sID09PSAnaHR0cHM6JzsKCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHAgPT4gYG9wdGlvbnMucHJveHlgIHwgYHByb2Nlc3MuZW52Lmh0dHBfcHJveHlgCiAgLy8gUHJveHkgcHJpb3JpdGl6YXRpb246IGh0dHBzID0+IGBvcHRpb25zLnByb3h5YCB8IGBwcm9jZXNzLmVudi5odHRwc19wcm94eWAgfCBgcHJvY2Vzcy5lbnYuaHR0cF9wcm94eWAKICBjb25zdCBwcm94eSA9IGFwcGx5Tm9Qcm94eU9wdGlvbigKICAgIHVybFNlZ21lbnRzLAogICAgb3B0aW9ucy5wcm94eSB8fCAoaXNIdHRwcyA/IHByb2Nlc3MuZW52Lmh0dHBzX3Byb3h5IDogdW5kZWZpbmVkKSB8fCBwcm9jZXNzLmVudi5odHRwX3Byb3h5LAogICk7CgogIGNvbnN0IG5hdGl2ZUh0dHBNb2R1bGUgPSBpc0h0dHBzID8gaHR0cHMgOiBodHRwOwogIGNvbnN0IGtlZXBBbGl2ZSA9IG9wdGlvbnMua2VlcEFsaXZlID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG9wdGlvbnMua2VlcEFsaXZlOwoKICAvLyBUT0RPKHY3KTogRXZhbHVhdGUgaWYgd2UgY2FuIHNldCBrZWVwQWxpdmUgdG8gdHJ1ZS4gVGhpcyB3b3VsZCBpbnZvbHZlIHRlc3RpbmcgZm9yIG1lbW9yeSBsZWFrcyBpbiBvbGRlciBub2RlCiAgLy8gdmVyc2lvbnMoPj0gOCkgYXMgdGhleSBoYWQgbWVtb3J5IGxlYWtzIHdoZW4gdXNpbmcgaXQ6ICMyNTU1CiAgY29uc3QgYWdlbnQgPSBwcm94eQogICAgPyAobmV3IEh0dHBzUHJveHlBZ2VudChwcm94eSkgKQogICAgOiBuZXcgbmF0aXZlSHR0cE1vZHVsZS5BZ2VudCh7IGtlZXBBbGl2ZSwgbWF4U29ja2V0czogMzAsIHRpbWVvdXQ6IDIwMDAgfSk7CgogIGNvbnN0IHJlcXVlc3RFeGVjdXRvciA9IGNyZWF0ZVJlcXVlc3RFeGVjdXRvcihvcHRpb25zLCBfbnVsbGlzaENvYWxlc2NlKG9wdGlvbnMuaHR0cE1vZHVsZSwgKCkgPT4gKCBuYXRpdmVIdHRwTW9kdWxlKSksIGFnZW50KTsKICByZXR1cm4gY3JlYXRlVHJhbnNwb3J0KG9wdGlvbnMsIHJlcXVlc3RFeGVjdXRvcik7Cn0KCi8qKgogKiBIb25vcnMgdGhlIGBub19wcm94eWAgZW52IHZhcmlhYmxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgdG8gYWxsb3cgZm9yIGhvc3RzIGV4Y2x1c2lvbi4KICoKICogQHBhcmFtIHRyYW5zcG9ydFVybCBUaGUgVVJMIHRoZSB0cmFuc3BvcnQgaW50ZW5kcyB0byBzZW5kIGV2ZW50cyB0by4KICogQHBhcmFtIHByb3h5IFRoZSBjbGllbnQgY29uZmlndXJlZCBwcm94eS4KICogQHJldHVybnMgQSBwcm94eSB0aGUgdHJhbnNwb3J0IHNob3VsZCB1c2UuCiAqLwpmdW5jdGlvbiBhcHBseU5vUHJveHlPcHRpb24odHJhbnNwb3J0VXJsU2VnbWVudHMsIHByb3h5KSB7CiAgY29uc3QgeyBub19wcm94eSB9ID0gcHJvY2Vzcy5lbnY7CgogIGNvbnN0IHVybElzRXhlbXB0RnJvbVByb3h5ID0KICAgIG5vX3Byb3h5ICYmCiAgICBub19wcm94eQogICAgICAuc3BsaXQoJywnKQogICAgICAuc29tZSgKICAgICAgICBleGVtcHRpb24gPT4gdHJhbnNwb3J0VXJsU2VnbWVudHMuaG9zdC5lbmRzV2l0aChleGVtcHRpb24pIHx8IHRyYW5zcG9ydFVybFNlZ21lbnRzLmhvc3RuYW1lLmVuZHNXaXRoKGV4ZW1wdGlvbiksCiAgICAgICk7CgogIGlmICh1cmxJc0V4ZW1wdEZyb21Qcm94eSkgewogICAgcmV0dXJuIHVuZGVmaW5lZDsKICB9IGVsc2UgewogICAgcmV0dXJuIHByb3h5OwogIH0KfQoKLyoqCiAqIENyZWF0ZXMgYSBSZXF1ZXN0RXhlY3V0b3IgdG8gYmUgdXNlZCB3aXRoIGBjcmVhdGVUcmFuc3BvcnRgLgogKi8KZnVuY3Rpb24gY3JlYXRlUmVxdWVzdEV4ZWN1dG9yKAogIG9wdGlvbnMsCiAgaHR0cE1vZHVsZSwKICBhZ2VudCwKKSB7CiAgY29uc3QgeyBob3N0bmFtZSwgcGF0aG5hbWUsIHBvcnQsIHByb3RvY29sLCBzZWFyY2ggfSA9IG5ldyBVUkwob3B0aW9ucy51cmwpOwogIHJldHVybiBmdW5jdGlvbiBtYWtlUmVxdWVzdChyZXF1ZXN0KSB7CiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICBsZXQgYm9keSA9IHN0cmVhbUZyb21Cb2R5KHJlcXVlc3QuYm9keSk7CgogICAgICBjb25zdCBoZWFkZXJzID0geyAuLi5vcHRpb25zLmhlYWRlcnMgfTsKCiAgICAgIGlmIChyZXF1ZXN0LmJvZHkubGVuZ3RoID4gR1pJUF9USFJFU0hPTEQpIHsKICAgICAgICBoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPSAnZ3ppcCc7CiAgICAgICAgYm9keSA9IGJvZHkucGlwZShjcmVhdGVHemlwKCkpOwogICAgICB9CgogICAgICBjb25zdCByZXEgPSBodHRwTW9kdWxlLnJlcXVlc3QoCiAgICAgICAgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBhZ2VudCwKICAgICAgICAgIGhlYWRlcnMsCiAgICAgICAgICBob3N0bmFtZSwKICAgICAgICAgIHBhdGg6IGAke3BhdGhuYW1lfSR7c2VhcmNofWAsCiAgICAgICAgICBwb3J0LAogICAgICAgICAgcHJvdG9jb2wsCiAgICAgICAgICBjYTogb3B0aW9ucy5jYUNlcnRzLAogICAgICAgIH0sCiAgICAgICAgcmVzID0+IHsKICAgICAgICAgIHJlcy5vbignZGF0YScsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHsKICAgICAgICAgICAgLy8gRHJhaW4gc29ja2V0CiAgICAgICAgICB9KTsKCiAgICAgICAgICByZXMuc2V0RW5jb2RpbmcoJ3V0ZjgnKTsKCiAgICAgICAgICAvLyAiS2V5LXZhbHVlIHBhaXJzIG9mIGhlYWRlciBuYW1lcyBhbmQgdmFsdWVzLiBIZWFkZXIgbmFtZXMgYXJlIGxvd2VyLWNhc2VkLiIKICAgICAgICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzCiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSwgKCkgPT4gKCBudWxsKSk7CiAgICAgICAgICBjb25zdCByYXRlTGltaXRzSGVhZGVyID0gX251bGxpc2hDb2FsZXNjZShyZXMuaGVhZGVyc1sneC1zZW50cnktcmF0ZS1saW1pdHMnXSwgKCkgPT4gKCBudWxsKSk7CgogICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlcy5zdGF0dXNDb2RlLAogICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgJ3JldHJ5LWFmdGVyJzogcmV0cnlBZnRlckhlYWRlciwKICAgICAgICAgICAgICAneC1zZW50cnktcmF0ZS1saW1pdHMnOiBBcnJheS5pc0FycmF5KHJhdGVMaW1pdHNIZWFkZXIpID8gcmF0ZUxpbWl0c0hlYWRlclswXSA6IHJhdGVMaW1pdHNIZWFkZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgcmVxLm9uKCdlcnJvcicsIHJlamVjdCk7CiAgICAgIGJvZHkucGlwZShyZXEpOwogICAgfSk7CiAgfTsKfQoKZnVuY3Rpb24gX29wdGlvbmFsQ2hhaW4ob3BzKSB7IGxldCBsYXN0QWNjZXNzTEhTID0gdW5kZWZpbmVkOyBsZXQgdmFsdWUgPSBvcHNbMF07IGxldCBpID0gMTsgd2hpbGUgKGkgPCBvcHMubGVuZ3RoKSB7IGNvbnN0IG9wID0gb3BzW2ldOyBjb25zdCBmbiA9IG9wc1tpICsgMV07IGkgKz0gMjsgaWYgKChvcCA9PT0gJ29wdGlvbmFsQWNjZXNzJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpICYmIHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBpZiAob3AgPT09ICdhY2Nlc3MnIHx8IG9wID09PSAnb3B0aW9uYWxBY2Nlc3MnKSB7IGxhc3RBY2Nlc3NMSFMgPSB2YWx1ZTsgdmFsdWUgPSBmbih2YWx1ZSk7IH0gZWxzZSBpZiAob3AgPT09ICdjYWxsJyB8fCBvcCA9PT0gJ29wdGlvbmFsQ2FsbCcpIHsgdmFsdWUgPSBmbigoLi4uYXJncykgPT4gdmFsdWUuY2FsbChsYXN0QWNjZXNzTEhTLCAuLi5hcmdzKSk7IGxhc3RBY2Nlc3NMSFMgPSB1bmRlZmluZWQ7IH0gfSByZXR1cm4gdmFsdWU7IH0KY29uc3Qgb3B0aW9ucyA9IHdvcmtlckRhdGE7CmxldCBzZXNzaW9uOwpsZXQgaGFzU2VudEFuckV2ZW50ID0gZmFsc2U7CgpmdW5jdGlvbiBsb2cobXNnKSB7CiAgaWYgKG9wdGlvbnMuZGVidWcpIHsKICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlCiAgICBjb25zb2xlLmxvZyhgW0FOUiBXb3JrZXJdICR7bXNnfWApOwogIH0KfQoKY29uc3QgdXJsID0gZ2V0RW52ZWxvcGVFbmRwb2ludFdpdGhVcmxFbmNvZGVkQXV0aChvcHRpb25zLmRzbik7CmNvbnN0IHRyYW5zcG9ydCA9IG1ha2VOb2RlVHJhbnNwb3J0KHsKICB1cmwsCiAgcmVjb3JkRHJvcHBlZEV2ZW50OiAoKSA9PiB7CiAgICAvLwogIH0sCn0pOwoKYXN5bmMgZnVuY3Rpb24gc2VuZEFibm9ybWFsU2Vzc2lvbigpIHsKICAvLyBvZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIHNlc3Npb24gcGFzc2VkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBzZW5kIGl0IGFzIGFibm9ybWFsCiAgaWYgKHNlc3Npb24pIHsKICAgIGxvZygnU2VuZGluZyBhYm5vcm1hbCBzZXNzaW9uJyk7CiAgICB1cGRhdGVTZXNzaW9uKHNlc3Npb24sIHsgc3RhdHVzOiAnYWJub3JtYWwnLCBhYm5vcm1hbF9tZWNoYW5pc206ICdhbnJfZm9yZWdyb3VuZCcgfSk7CgogICAgY29uc3QgZW52ZWxvcGUgPSBjcmVhdGVTZXNzaW9uRW52ZWxvcGUoc2Vzc2lvbiwgb3B0aW9ucy5kc24sIG9wdGlvbnMuc2RrTWV0YWRhdGEpOwogICAgLy8gTG9nIHRoZSBlbnZlbG9wZSBzbyB0byBhaWQgaW4gdGVzdGluZwogICAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogICAgYXdhaXQgdHJhbnNwb3J0LnNlbmQoZW52ZWxvcGUpOwoKICAgIHRyeSB7CiAgICAgIC8vIE5vdGlmeSB0aGUgbWFpbiBwcm9jZXNzIHRoYXQgdGhlIHNlc3Npb24gaGFzIGVuZGVkIHNvIHRoZSBzZXNzaW9uIGNhbiBiZSBjbGVhcmVkIGZyb20gdGhlIHNjb3BlCiAgICAgIF9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfMiA9PiBfMi5wb3N0TWVzc2FnZSwgJ2NhbGwnLCBfMyA9PiBfMygnc2Vzc2lvbi1lbmRlZCcpXSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vIGlnbm9yZQogICAgfQogIH0KfQoKbG9nKCdTdGFydGVkJyk7CgpmdW5jdGlvbiBwcmVwYXJlU3RhY2tGcmFtZXMoc3RhY2tGcmFtZXMpIHsKICBpZiAoIXN0YWNrRnJhbWVzKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gU3RyaXAgU2VudHJ5IGZyYW1lcyBhbmQgcmV2ZXJzZSB0aGUgc3RhY2sgZnJhbWVzIHNvIHRoZXkgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCiAgY29uc3Qgc3RyaXBwZWRGcmFtZXMgPSBzdHJpcFNlbnRyeUZyYW1lc0FuZFJldmVyc2Uoc3RhY2tGcmFtZXMpOwoKICAvLyBJZiB3ZSBoYXZlIGFuIGFwcCByb290IHBhdGgsIHJld3JpdGUgdGhlIGZpbGVuYW1lcyB0byBiZSByZWxhdGl2ZSB0byB0aGUgYXBwIHJvb3QKICBpZiAob3B0aW9ucy5hcHBSb290UGF0aCkgewogICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdHJpcHBlZEZyYW1lcykgewogICAgICBpZiAoIWZyYW1lLmZpbGVuYW1lKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIGZyYW1lLmZpbGVuYW1lID0gbm9ybWFsaXplVXJsVG9CYXNlKGZyYW1lLmZpbGVuYW1lLCBvcHRpb25zLmFwcFJvb3RQYXRoKTsKICAgIH0KICB9CgogIHJldHVybiBzdHJpcHBlZEZyYW1lczsKfQoKZnVuY3Rpb24gYXBwbHlTY29wZVRvRXZlbnQoZXZlbnQsIHNjb3BlKSB7CiAgYXBwbHlTY29wZURhdGFUb0V2ZW50KGV2ZW50LCBzY29wZSk7CgogIGlmICghX29wdGlvbmFsQ2hhaW4oW2V2ZW50LCAnYWNjZXNzJywgXzQgPT4gXzQuY29udGV4dHMsICdvcHRpb25hbEFjY2VzcycsIF81ID0+IF81LnRyYWNlXSkpIHsKICAgIGNvbnN0IHsgdHJhY2VJZCwgc3BhbklkLCBwYXJlbnRTcGFuSWQgfSA9IHNjb3BlLnByb3BhZ2F0aW9uQ29udGV4dDsKICAgIGV2ZW50LmNvbnRleHRzID0gewogICAgICB0cmFjZTogewogICAgICAgIHRyYWNlX2lkOiB0cmFjZUlkLAogICAgICAgIHNwYW5faWQ6IHNwYW5JZCwKICAgICAgICBwYXJlbnRfc3Bhbl9pZDogcGFyZW50U3BhbklkLAogICAgICB9LAogICAgICAuLi5ldmVudC5jb250ZXh0cywKICAgIH07CiAgfQp9Cgphc3luYyBmdW5jdGlvbiBzZW5kQW5yRXZlbnQoZnJhbWVzLCBzY29wZSkgewogIGlmIChoYXNTZW50QW5yRXZlbnQpIHsKICAgIHJldHVybjsKICB9CgogIGhhc1NlbnRBbnJFdmVudCA9IHRydWU7CgogIGF3YWl0IHNlbmRBYm5vcm1hbFNlc3Npb24oKTsKCiAgbG9nKCdTZW5kaW5nIGV2ZW50Jyk7CgogIGNvbnN0IGV2ZW50ID0gewogICAgZXZlbnRfaWQ6IHV1aWQ0KCksCiAgICBjb250ZXh0czogb3B0aW9ucy5jb250ZXh0cywKICAgIHJlbGVhc2U6IG9wdGlvbnMucmVsZWFzZSwKICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LAogICAgZGlzdDogb3B0aW9ucy5kaXN0LAogICAgcGxhdGZvcm06ICdub2RlJywKICAgIGxldmVsOiAnZXJyb3InLAogICAgZXhjZXB0aW9uOiB7CiAgICAgIHZhbHVlczogWwogICAgICAgIHsKICAgICAgICAgIHR5cGU6ICdBcHBsaWNhdGlvbk5vdFJlc3BvbmRpbmcnLAogICAgICAgICAgdmFsdWU6IGBBcHBsaWNhdGlvbiBOb3QgUmVzcG9uZGluZyBmb3IgYXQgbGVhc3QgJHtvcHRpb25zLmFuclRocmVzaG9sZH0gbXNgLAogICAgICAgICAgc3RhY2t0cmFjZTogeyBmcmFtZXM6IHByZXBhcmVTdGFja0ZyYW1lcyhmcmFtZXMpIH0sCiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIFVJIGRvZXNuJ3Qgc2F5ICdDcmFzaGVkIGluJyBmb3IgdGhlIHN0YWNrIHRyYWNlCiAgICAgICAgICBtZWNoYW5pc206IHsgdHlwZTogJ0FOUicgfSwKICAgICAgICB9LAogICAgICBdLAogICAgfSwKICAgIHRhZ3M6IG9wdGlvbnMuc3RhdGljVGFncywKICB9OwoKICBpZiAoc2NvcGUpIHsKICAgIGFwcGx5U2NvcGVUb0V2ZW50KGV2ZW50LCBzY29wZSk7CiAgfQoKICBjb25zdCBlbnZlbG9wZSA9IGNyZWF0ZUV2ZW50RW52ZWxvcGUoZXZlbnQsIG9wdGlvbnMuZHNuLCBvcHRpb25zLnNka01ldGFkYXRhKTsKICAvLyBMb2cgdGhlIGVudmVsb3BlIHRvIGFpZCBpbiB0ZXN0aW5nCiAgbG9nKEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKSk7CgogIGF3YWl0IHRyYW5zcG9ydC5zZW5kKGVudmVsb3BlKTsKICBhd2FpdCB0cmFuc3BvcnQuZmx1c2goMjAwMCk7CgogIC8vIERlbGF5IGZvciA1IHNlY29uZHMgc28gdGhhdCBzdGRpbyBjYW4gZmx1c2ggaW4gdGhlIG1haW4gZXZlbnQgbG9vcCBldmVyIHJlc3RhcnRzLgogIC8vIFRoaXMgaXMgbWFpbmx5IGZvciB0aGUgYmVuZWZpdCBvZiBsb2dnaW5nL2RlYnVnZ2luZyBpc3N1ZXMuCiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBwcm9jZXNzLmV4aXQoMCk7CiAgfSwgNTAwMCk7Cn0KCmxldCBkZWJ1Z2dlclBhdXNlOwoKaWYgKG9wdGlvbnMuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICBsb2coJ0Nvbm5lY3RpbmcgdG8gZGVidWdnZXInKTsKCiAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKCkgOwogIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICBsb2coJ0Nvbm5lY3RlZCB0byBkZWJ1Z2dlcicpOwoKICAvLyBDb2xsZWN0IHNjcmlwdElkIC0+IHVybCBtYXAgc28gd2UgY2FuIGxvb2sgdXAgdGhlIGZpbGVuYW1lcyBsYXRlcgogIGNvbnN0IHNjcmlwdHMgPSBuZXcgTWFwKCk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnNjcmlwdFBhcnNlZCcsIGV2ZW50ID0+IHsKICAgIHNjcmlwdHMuc2V0KGV2ZW50LnBhcmFtcy5zY3JpcHRJZCwgZXZlbnQucGFyYW1zLnVybCk7CiAgfSk7CgogIHNlc3Npb24ub24oJ0RlYnVnZ2VyLnBhdXNlZCcsIGV2ZW50ID0+IHsKICAgIGlmIChldmVudC5wYXJhbXMucmVhc29uICE9PSAnb3RoZXInKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB0cnkgewogICAgICBsb2coJ0RlYnVnZ2VyIHBhdXNlZCcpOwoKICAgICAgLy8gY29weSB0aGUgZnJhbWVzCiAgICAgIGNvbnN0IGNhbGxGcmFtZXMgPSBbLi4uZXZlbnQucGFyYW1zLmNhbGxGcmFtZXNdOwoKICAgICAgY29uc3QgZ2V0TW9kdWxlTmFtZSA9IG9wdGlvbnMuYXBwUm9vdFBhdGggPyBjcmVhdGVHZXRNb2R1bGVGcm9tRmlsZW5hbWUob3B0aW9ucy5hcHBSb290UGF0aCkgOiAoKSA9PiB1bmRlZmluZWQ7CiAgICAgIGNvbnN0IHN0YWNrRnJhbWVzID0gY2FsbEZyYW1lcy5tYXAoZnJhbWUgPT4KICAgICAgICBjYWxsRnJhbWVUb1N0YWNrRnJhbWUoZnJhbWUsIHNjcmlwdHMuZ2V0KGZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSwgZ2V0TW9kdWxlTmFtZSksCiAgICAgICk7CgogICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBpbiB0aGUgY3VycmVudGx5IHBhdXNlZCBjb250ZXh0CiAgICAgIHNlc3Npb24ucG9zdCgKICAgICAgICAnUnVudGltZS5ldmFsdWF0ZScsCiAgICAgICAgewogICAgICAgICAgLy8gR3JhYiB0aGUgdHJhY2UgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50IHNjb3BlCiAgICAgICAgICBleHByZXNzaW9uOiAnZ2xvYmFsLl9fU0VOVFJZX0dFVF9TQ09QRVNfXygpOycsCiAgICAgICAgICAvLyBEb24ndCByZS10cmlnZ2VyIHRoZSBkZWJ1Z2dlciBpZiB0aGlzIGNhdXNlcyBhbiBlcnJvcgogICAgICAgICAgc2lsZW50OiB0cnVlLAogICAgICAgICAgLy8gU2VyaWFsaXplIHRoZSByZXN1bHQgdG8ganNvbiBvdGhlcndpc2Ugb25seSBwcmltaXRpdmVzIGFyZSBzdXBwb3J0ZWQKICAgICAgICAgIHJldHVybkJ5VmFsdWU6IHRydWUsCiAgICAgICAgfSwKICAgICAgICAoZXJyLCBwYXJhbSkgPT4gewogICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBsb2coYEVycm9yIGV4ZWN1dGluZyBzY3JpcHQ6ICcke2Vyci5tZXNzYWdlfSdgKTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBzY29wZXMgPSBwYXJhbSAmJiBwYXJhbS5yZXN1bHQgPyAocGFyYW0ucmVzdWx0LnZhbHVlICkgOiB1bmRlZmluZWQ7CgogICAgICAgICAgc2Vzc2lvbi5wb3N0KCdEZWJ1Z2dlci5yZXN1bWUnKTsKICAgICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZGlzYWJsZScpOwoKICAgICAgICAgIHNlbmRBbnJFdmVudChzdGFja0ZyYW1lcywgc2NvcGVzKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQuJyk7CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICApOwogICAgfSBjYXRjaCAoZSkgewogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLnJlc3VtZScpOwogICAgICBzZXNzaW9uLnBvc3QoJ0RlYnVnZ2VyLmRpc2FibGUnKTsKICAgICAgdGhyb3cgZTsKICAgIH0KICB9KTsKCiAgZGVidWdnZXJQYXVzZSA9ICgpID0+IHsKICAgIHRyeSB7CiAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIuZW5hYmxlJywgKCkgPT4gewogICAgICAgIHNlc3Npb24ucG9zdCgnRGVidWdnZXIucGF1c2UnKTsKICAgICAgfSk7CiAgICB9IGNhdGNoIChfKSB7CiAgICAgIC8vCiAgICB9CiAgfTsKfQoKZnVuY3Rpb24gY3JlYXRlSHJUaW1lcigpIHsKICAvLyBUT0RPICh2OCk6IFdlIGNhbiB1c2UgcHJvY2Vzcy5ocnRpbWUuYmlnaW50KCkgYWZ0ZXIgd2UgZHJvcCBub2RlIHY4CiAgbGV0IGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKCiAgcmV0dXJuIHsKICAgIGdldFRpbWVNczogKCkgPT4gewogICAgICBjb25zdCBbc2Vjb25kcywgbmFub1NlY29uZHNdID0gcHJvY2Vzcy5ocnRpbWUobGFzdFBvbGwpOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihzZWNvbmRzICogMWUzICsgbmFub1NlY29uZHMgLyAxZTYpOwogICAgfSwKICAgIHJlc2V0OiAoKSA9PiB7CiAgICAgIGxhc3RQb2xsID0gcHJvY2Vzcy5ocnRpbWUoKTsKICAgIH0sCiAgfTsKfQoKZnVuY3Rpb24gd2F0Y2hkb2dUaW1lb3V0KCkgewogIGxvZygnV2F0Y2hkb2cgdGltZW91dCcpOwoKICBpZiAoZGVidWdnZXJQYXVzZSkgewogICAgbG9nKCdQYXVzaW5nIGRlYnVnZ2VyIHRvIGNhcHR1cmUgc3RhY2sgdHJhY2UnKTsKICAgIGRlYnVnZ2VyUGF1c2UoKTsKICB9IGVsc2UgewogICAgbG9nKCdDYXB0dXJpbmcgZXZlbnQgd2l0aG91dCBhIHN0YWNrIHRyYWNlJyk7CiAgICBzZW5kQW5yRXZlbnQoKS50aGVuKG51bGwsICgpID0+IHsKICAgICAgbG9nKCdTZW5kaW5nIEFOUiBldmVudCBmYWlsZWQgb24gd2F0Y2hkb2cgdGltZW91dC4nKTsKICAgIH0pOwogIH0KfQoKY29uc3QgeyBwb2xsIH0gPSB3YXRjaGRvZ1RpbWVyKGNyZWF0ZUhyVGltZXIsIG9wdGlvbnMucG9sbEludGVydmFsLCBvcHRpb25zLmFuclRocmVzaG9sZCwgd2F0Y2hkb2dUaW1lb3V0KTsKCl9vcHRpb25hbENoYWluKFtwYXJlbnRQb3J0LCAnb3B0aW9uYWxBY2Nlc3MnLCBfNiA9PiBfNi5vbiwgJ2NhbGwnLCBfNyA9PiBfNygnbWVzc2FnZScsIChtc2cpID0+IHsKICBpZiAobXNnLnNlc3Npb24pIHsKICAgIHNlc3Npb24gPSBtYWtlU2Vzc2lvbihtc2cuc2Vzc2lvbik7CiAgfQoKICBwb2xsKCk7Cn0pXSk7"}});var require_anr2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/index.js"(exports,module){var{_optionalChain,_optionalChainDelete}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var url=__require("url"),core=require_cjs2(),utils=require_cjs(),nodeVersion=require_nodeVersion(),workerScript=require_worker_script(),DEFAULT_INTERVAL=50,DEFAULT_HANG_THRESHOLD=5e3;function log(message,...args){utils.logger.log(`[ANR] ${message}`,...args)}function globalWithScopeFetchFn(){return utils.GLOBAL_OBJ}function getScopeData(){let scope=core.getGlobalScope().getScopeData();return core.mergeScopeData(scope,core.getIsolationScope().getScopeData()),core.mergeScopeData(scope,core.getCurrentScope().getScopeData()),scope.attachments=[],scope.eventProcessors=[],scope}function getWorkerThreads(){return utils.dynamicRequire(module,"worker_threads")}async function getContexts(client){let event={message:"ANR"},eventHint={};for(let processor of client.getEventProcessors()){if(event===null)break;event=await processor(event,eventHint)}return _optionalChain([event,"optionalAccess",_2=>_2.contexts])||{}}var INTEGRATION_NAME="Anr",_anrIntegration=(options={})=>{if(nodeVersion.NODE_VERSION.major<16||nodeVersion.NODE_VERSION.major===16&&nodeVersion.NODE_VERSION.minor<17)throw new Error("ANR detection requires Node 16.17.0 or later");let worker,client,gbl=globalWithScopeFetchFn();return gbl.__SENTRY_GET_SCOPES__=getScopeData,{name:INTEGRATION_NAME,setupOnce(){},startWorker:()=>{worker||client&&(worker=_startWorker(client,options))},stopWorker:()=>{worker&&worker.then(stop=>{stop(),worker=void 0})},setup(initClient){client=initClient,setImmediate(()=>this.startWorker())}}},anrIntegration=core.defineIntegration(_anrIntegration),Anr=core.convertIntegrationFnToClass(INTEGRATION_NAME,anrIntegration);async function _startWorker(client,integrationOptions){let dsn=client.getDsn();if(!dsn)return()=>{};let contexts=await getContexts(client);_optionalChainDelete([contexts,"access",_3=>_3.app,"optionalAccess",_4=>delete _4.app_memory]),_optionalChainDelete([contexts,"access",_5=>_5.device,"optionalAccess",_6=>delete _6.free_memory]);let initOptions=client.getOptions(),sdkMetadata=client.getSdkMetadata()||{};sdkMetadata.sdk&&(sdkMetadata.sdk.integrations=initOptions.integrations.map(i=>i.name));let options={debug:utils.logger.isEnabled(),dsn,environment:initOptions.environment||"production",release:initOptions.release,dist:initOptions.dist,sdkMetadata,appRootPath:integrationOptions.appRootPath,pollInterval:integrationOptions.pollInterval||DEFAULT_INTERVAL,anrThreshold:integrationOptions.anrThreshold||DEFAULT_HANG_THRESHOLD,captureStackTrace:!!integrationOptions.captureStackTrace,staticTags:integrationOptions.staticTags||{},contexts};if(options.captureStackTrace){let inspector=__require("inspector");inspector.url()||inspector.open(0)}let{Worker}=getWorkerThreads(),worker=new Worker(new url.URL(`data:application/javascript;base64,${workerScript.base64WorkerScript}`),{workerData:options});process.on("exit",()=>{worker.terminate()});let timer=setInterval(()=>{try{let currentSession=core.getCurrentScope().getSession(),session=currentSession?{...currentSession,toJSON:void 0}:void 0;worker.postMessage({session})}catch{}},options.pollInterval);return timer.unref(),worker.on("message",msg=>{msg==="session-ended"&&(log("ANR event sent from ANR worker. Clearing session in this thread."),core.getCurrentScope().setSession(void 0))}),worker.once("error",err=>{clearInterval(timer),log("ANR worker error",err)}),worker.once("exit",code=>{clearInterval(timer),log("ANR worker exit",code)}),worker.unref(),()=>{worker.terminate(),clearInterval(timer)}}exports.Anr=Anr;exports.anrIntegration=anrIntegration}});var require_legacy=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/anr/legacy.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),index=require_anr2();function enableAnrDetection(options){let client=core.getClient();return new index.Anr(options).setup(client),Promise.resolve()}exports.enableAnrDetection=enableAnrDetection}});var require_trpc=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/trpc.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs();function trpcMiddleware(options={}){return function({path,type,next,rawInput}){let clientOptions=_optionalChain([core.getClient,"call",_=>_(),"optionalAccess",_2=>_2.getOptions,"call",_3=>_3()]),sentryTransaction=core.getCurrentScope().getTransaction();if(sentryTransaction){sentryTransaction.updateName(`trpc/${path}`),sentryTransaction.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,"route"),sentryTransaction.op="rpc.server";let trpcContext={procedure_type:type};(options.attachRpcInput!==void 0?options.attachRpcInput:_optionalChain([clientOptions,"optionalAccess",_4=>_4.sendDefaultPii]))&&(trpcContext.input=utils.normalize(rawInput)),sentryTransaction.setContext("trpc",trpcContext)}function captureIfError(nextResult){nextResult.ok||core.captureException(nextResult.error,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}})}let maybePromiseResult;try{maybePromiseResult=next()}catch(e){throw core.captureException(e,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}}),e}return utils.isThenable(maybePromiseResult)?Promise.resolve(maybePromiseResult).then(nextResult=>{captureIfError(nextResult)},e=>{core.captureException(e,{mechanism:{handled:!1,data:{function:"trpcMiddleware"}}})}):captureIfError(maybePromiseResult),maybePromiseResult}}exports.trpcMiddleware=trpcMiddleware}});var require_requestDataDeprecated=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/requestDataDeprecated.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs();function extractRequestData(req,keys){return utils.extractRequestData(req,{include:keys})}function parseRequest(event,req,options={}){return utils.addRequestDataToEvent(event,req,{include:options})}exports.extractRequestData=extractRequestData;exports.parseRequest=parseRequest}});var require_handlers2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/handlers.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build4(),sdk=require_sdk2(),trpc=require_trpc(),requestDataDeprecated=require_requestDataDeprecated();function tracingHandler(){return function(req,res,next){let options=_optionalChain([core.getClient,"call",_=>_(),"optionalAccess",_2=>_2.getOptions,"call",_3=>_3()]);if(!options||options.instrumenter!=="sentry"||_optionalChain([req,"access",_4=>_4.method,"optionalAccess",_5=>_5.toUpperCase,"call",_6=>_6()])==="OPTIONS"||_optionalChain([req,"access",_7=>_7.method,"optionalAccess",_8=>_8.toUpperCase,"call",_9=>_9()])==="HEAD")return next();let sentryTrace=req.headers&&utils.isString(req.headers["sentry-trace"])?req.headers["sentry-trace"]:void 0,baggage=_optionalChain([req,"access",_10=>_10.headers,"optionalAccess",_11=>_11.baggage]);if(!core.hasTracingEnabled(options))return next();let[name,source]=utils.extractPathForTransaction(req,{path:!0,method:!0}),transaction=core.continueTrace({sentryTrace,baggage},ctx=>core.startTransaction({name,op:"http.server",origin:"auto.http.node.tracingHandler",...ctx,data:{[core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]:source},metadata:{...ctx.metadata,request:req}},{request:utils.extractRequestData(req)}));core.getCurrentScope().setSpan(transaction),res.__sentry_transaction=transaction,res.once("finish",()=>{setImmediate(()=>{utils.addRequestDataToTransaction(transaction,req),core.setHttpStatus(transaction,res.statusCode),transaction.end()})}),next()}}function convertReqHandlerOptsToAddReqDataOpts(reqHandlerOptions={}){let addRequestDataOptions;if("include"in reqHandlerOptions)addRequestDataOptions={include:reqHandlerOptions.include};else{let{ip,request,transaction,user}=reqHandlerOptions;(ip||request||transaction||user)&&(addRequestDataOptions={include:utils.dropUndefinedKeys({ip,request,transaction,user})})}return addRequestDataOptions}function requestHandler(options){let requestDataOptions=convertReqHandlerOptsToAddReqDataOpts(options),client=core.getClient();if(client&&sdk.isAutoSessionTrackingEnabled(client)){client.initSessionFlusher();let scope=core.getCurrentScope();scope.getSession()&&scope.setSession()}return function(req,res,next){if(options&&options.flushTimeout&&options.flushTimeout>0){let _end=res.end;res.end=function(chunk,encoding,cb){core.flush(options.flushTimeout).then(()=>{_end.call(this,chunk,encoding,cb)}).then(null,e=>{debugBuild.DEBUG_BUILD&&utils.logger.error(e),_end.call(this,chunk,encoding,cb)})}}core.runWithAsyncContext(()=>{let scope=core.getCurrentScope();scope.setSDKProcessingMetadata({request:req,requestDataOptionsFromExpressHandler:requestDataOptions});let client2=core.getClient();sdk.isAutoSessionTrackingEnabled(client2)&&scope.setRequestSession({status:"ok"}),res.once("finish",()=>{let client3=core.getClient();sdk.isAutoSessionTrackingEnabled(client3)&&setImmediate(()=>{client3&&client3._captureRequestSession&&client3._captureRequestSession()})}),next()})}}function getStatusCodeFromResponse(error){let statusCode=error.status||error.statusCode||error.status_code||error.output&&error.output.statusCode;return statusCode?parseInt(statusCode,10):500}function defaultShouldHandleError(error){return getStatusCodeFromResponse(error)>=500}function errorHandler(options){return function(error,_req,res,next){if((options&&options.shouldHandleError||defaultShouldHandleError)(error)){core.withScope(_scope=>{_scope.setSDKProcessingMetadata({request:_req});let transaction=res.__sentry_transaction;transaction&&!core.getActiveSpan()&&_scope.setSpan(transaction);let client=core.getClient();if(client&&sdk.isAutoSessionTrackingEnabled(client)&&client._sessionFlusher!==void 0){let requestSession=_scope.getRequestSession();requestSession&&requestSession.status!==void 0&&(requestSession.status="crashed")}let eventId=core.captureException(error,{mechanism:{type:"middleware",handled:!1}});res.sentry=eventId,next(error)});return}next(error)}}var trpcMiddleware=trpc.trpcMiddleware;exports.extractRequestData=requestDataDeprecated.extractRequestData;exports.parseRequest=requestDataDeprecated.parseRequest;exports.errorHandler=errorHandler;exports.requestHandler=requestHandler;exports.tracingHandler=tracingHandler;exports.trpcMiddleware=trpcMiddleware}});var require_hapi=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/hapi/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs();function isResponseObject(response){return response&&response.statusCode!==void 0}function isErrorEvent(event){return event&&event.error!==void 0}function sendErrorToSentry(errorData){core.captureException(errorData,{mechanism:{type:"hapi",handled:!1,data:{function:"hapiErrorPlugin"}}})}var hapiErrorPlugin={name:"SentryHapiErrorPlugin",version:core.SDK_VERSION,register:async function(serverArg){serverArg.events.on("request",(request,event)=>{let transaction=core.getActiveTransaction();isErrorEvent(event)&&sendErrorToSentry(event.error),transaction&&(transaction.setStatus("internal_error"),transaction.end())})}},hapiTracingPlugin={name:"SentryHapiTracingPlugin",version:core.SDK_VERSION,register:async function(serverArg){let server=serverArg;server.ext("onPreHandler",(request,h)=>{let transaction=core.continueTrace({sentryTrace:request.headers["sentry-trace"]||void 0,baggage:request.headers.baggage||void 0},transactionContext=>core.startTransaction({...transactionContext,op:"hapi.request",name:request.route.path,description:`${request.route.method} ${request.path}`}));return core.getCurrentScope().setSpan(transaction),h.continue}),server.ext("onPreResponse",(request,h)=>{let transaction=core.getActiveTransaction();if(request.response&&isResponseObject(request.response)&&transaction){let response=request.response;response.header("sentry-trace",core.spanToTraceHeader(transaction));let dynamicSamplingContext=utils.dynamicSamplingContextToSentryBaggageHeader(core.getDynamicSamplingContextFromSpan(transaction));dynamicSamplingContext&&response.header("baggage",dynamicSamplingContext)}return h.continue}),server.ext("onPostHandler",(request,h)=>{let transaction=core.getActiveTransaction();return transaction&&(request.response&&isResponseObject(request.response)&&core.setHttpStatus(transaction,request.response.statusCode),transaction.end()),h.continue})}},INTEGRATION_NAME="Hapi",_hapiIntegration=(options={})=>{let server=options.server;return{name:INTEGRATION_NAME,setupOnce(){server&&utils.fill(server,"start",originalStart=>async function(){return await this.register(hapiTracingPlugin),await this.register(hapiErrorPlugin),originalStart.apply(this)})}}},hapiIntegration=core.defineIntegration(_hapiIntegration),Hapi=core.convertIntegrationFnToClass(INTEGRATION_NAME,hapiIntegration);exports.Hapi=Hapi;exports.hapiErrorPlugin=hapiErrorPlugin;exports.hapiIntegration=hapiIntegration;exports.hapiTracingPlugin=hapiTracingPlugin}});var require_integrations2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/integrations/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var console2=require_console2(),http=require_http3(),onuncaughtexception=require_onuncaughtexception(),onunhandledrejection=require_onunhandledrejection(),modules=require_modules(),contextlines=require_contextlines(),context=require_context(),core=require_cjs2(),index=require_local_variables(),index$1=require_undici(),spotlight=require_spotlight(),index$2=require_anr2(),index$3=require_hapi();exports.Console=console2.Console;exports.Http=http.Http;exports.OnUncaughtException=onuncaughtexception.OnUncaughtException;exports.OnUnhandledRejection=onunhandledrejection.OnUnhandledRejection;exports.Modules=modules.Modules;exports.ContextLines=contextlines.ContextLines;exports.Context=context.Context;exports.RequestData=core.RequestData;exports.LocalVariables=index.LocalVariables;exports.Undici=index$1.Undici;exports.Spotlight=spotlight.Spotlight;exports.Anr=index$2.Anr;exports.Hapi=index$3.Hapi}});var require_integrations3=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/tracing/integrations.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var tracing=require_cjs3();exports.Apollo=tracing.Apollo;exports.Express=tracing.Express;exports.GraphQL=tracing.GraphQL;exports.Mongo=tracing.Mongo;exports.Mysql=tracing.Mysql;exports.Postgres=tracing.Postgres;exports.Prisma=tracing.Prisma}});var require_captureconsole=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/captureconsole.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),INTEGRATION_NAME="CaptureConsole",_captureConsoleIntegration=(options={})=>{let levels=options.levels||utils.CONSOLE_LEVELS;return{name:INTEGRATION_NAME,setupOnce(){},setup(client){"console"in utils.GLOBAL_OBJ&&utils.addConsoleInstrumentationHandler(({args,level})=>{core.getClient()!==client||!levels.includes(level)||consoleHandler(args,level)})}}},captureConsoleIntegration=core.defineIntegration(_captureConsoleIntegration),CaptureConsole=core.convertIntegrationFnToClass(INTEGRATION_NAME,captureConsoleIntegration);function consoleHandler(args,level){let captureContext={level:utils.severityLevelFromString(level),extra:{arguments:args}};core.withScope(scope=>{if(scope.addEventProcessor(event=>(event.logger="console",utils.addExceptionMechanism(event,{handled:!1,type:"console"}),event)),level==="assert"&&args[0]===!1){let message2=`Assertion failed: ${utils.safeJoin(args.slice(1)," ")||"console.assert"}`;scope.setExtra("arguments",args.slice(1)),core.captureMessage(message2,captureContext);return}let error=args.find(arg=>arg instanceof Error);if(level==="error"&&error){core.captureException(error,captureContext);return}let message=utils.safeJoin(args," ");core.captureMessage(message,captureContext)})}exports.CaptureConsole=CaptureConsole;exports.captureConsoleIntegration=captureConsoleIntegration}});var require_debug=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),INTEGRATION_NAME="Debug",_debugIntegration=(options={})=>{let _options={debugger:!1,stringify:!1,...options};return{name:INTEGRATION_NAME,setupOnce(){},setup(client){client.on&&client.on("beforeSendEvent",(event,hint)=>{if(_options.debugger)debugger;utils.consoleSandbox(()=>{_options.stringify?(console.log(JSON.stringify(event,null,2)),hint&&Object.keys(hint).length&&console.log(JSON.stringify(hint,null,2))):(console.log(event),hint&&Object.keys(hint).length&&console.log(hint))})})}}},debugIntegration=core.defineIntegration(_debugIntegration),Debug=core.convertIntegrationFnToClass(INTEGRATION_NAME,debugIntegration);exports.Debug=Debug;exports.debugIntegration=debugIntegration}});var require_debug_build5=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/debug-build.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var DEBUG_BUILD=typeof __SENTRY_DEBUG__>"u"||__SENTRY_DEBUG__;exports.DEBUG_BUILD=DEBUG_BUILD}});var require_dedupe=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/dedupe.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build5(),INTEGRATION_NAME="Dedupe",_dedupeIntegration=()=>{let previousEvent;return{name:INTEGRATION_NAME,setupOnce(){},processEvent(currentEvent){if(currentEvent.type)return currentEvent;try{if(_shouldDropEvent(currentEvent,previousEvent))return debugBuild.DEBUG_BUILD&&utils.logger.warn("Event dropped due to being a duplicate of previously captured event."),null}catch{}return previousEvent=currentEvent}}},dedupeIntegration=core.defineIntegration(_dedupeIntegration),Dedupe=core.convertIntegrationFnToClass(INTEGRATION_NAME,dedupeIntegration);function _shouldDropEvent(currentEvent,previousEvent){return previousEvent?!!(_isSameMessageEvent(currentEvent,previousEvent)||_isSameExceptionEvent(currentEvent,previousEvent)):!1}function _isSameMessageEvent(currentEvent,previousEvent){let currentMessage=currentEvent.message,previousMessage=previousEvent.message;return!(!currentMessage&&!previousMessage||currentMessage&&!previousMessage||!currentMessage&&previousMessage||currentMessage!==previousMessage||!_isSameFingerprint(currentEvent,previousEvent)||!_isSameStacktrace(currentEvent,previousEvent))}function _isSameExceptionEvent(currentEvent,previousEvent){let previousException=_getExceptionFromEvent(previousEvent),currentException=_getExceptionFromEvent(currentEvent);return!(!previousException||!currentException||previousException.type!==currentException.type||previousException.value!==currentException.value||!_isSameFingerprint(currentEvent,previousEvent)||!_isSameStacktrace(currentEvent,previousEvent))}function _isSameStacktrace(currentEvent,previousEvent){let currentFrames=_getFramesFromEvent(currentEvent),previousFrames=_getFramesFromEvent(previousEvent);if(!currentFrames&&!previousFrames)return!0;if(currentFrames&&!previousFrames||!currentFrames&&previousFrames||(currentFrames=currentFrames,previousFrames=previousFrames,previousFrames.length!==currentFrames.length))return!1;for(let i=0;i<previousFrames.length;i++){let frameA=previousFrames[i],frameB=currentFrames[i];if(frameA.filename!==frameB.filename||frameA.lineno!==frameB.lineno||frameA.colno!==frameB.colno||frameA.function!==frameB.function)return!1}return!0}function _isSameFingerprint(currentEvent,previousEvent){let currentFingerprint=currentEvent.fingerprint,previousFingerprint=previousEvent.fingerprint;if(!currentFingerprint&&!previousFingerprint)return!0;if(currentFingerprint&&!previousFingerprint||!currentFingerprint&&previousFingerprint)return!1;currentFingerprint=currentFingerprint,previousFingerprint=previousFingerprint;try{return currentFingerprint.join("")===previousFingerprint.join("")}catch{return!1}}function _getExceptionFromEvent(event){return event.exception&&event.exception.values&&event.exception.values[0]}function _getFramesFromEvent(event){let exception=event.exception;if(exception)try{return exception.values[0].stacktrace.frames}catch{return}}exports.Dedupe=Dedupe;exports._shouldDropEvent=_shouldDropEvent;exports.dedupeIntegration=dedupeIntegration}});var require_extraerrordata=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/extraerrordata.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build5(),INTEGRATION_NAME="ExtraErrorData",_extraErrorDataIntegration=(options={})=>{let depth=options.depth||3,captureErrorCause=options.captureErrorCause||!1;return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event,hint){return _enhanceEventWithErrorData(event,hint,depth,captureErrorCause)}}},extraErrorDataIntegration=core.defineIntegration(_extraErrorDataIntegration),ExtraErrorData=core.convertIntegrationFnToClass(INTEGRATION_NAME,extraErrorDataIntegration);function _enhanceEventWithErrorData(event,hint={},depth,captureErrorCause){if(!hint.originalException||!utils.isError(hint.originalException))return event;let exceptionName=hint.originalException.name||hint.originalException.constructor.name,errorData=_extractErrorData(hint.originalException,captureErrorCause);if(errorData){let contexts={...event.contexts},normalizedErrorData=utils.normalize(errorData,depth);return utils.isPlainObject(normalizedErrorData)&&(utils.addNonEnumerableProperty(normalizedErrorData,"__sentry_skip_normalization__",!0),contexts[exceptionName]=normalizedErrorData),{...event,contexts}}return event}function _extractErrorData(error,captureErrorCause){try{let nativeKeys=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"],extraErrorInfo={};for(let key of Object.keys(error)){if(nativeKeys.indexOf(key)!==-1)continue;let value=error[key];extraErrorInfo[key]=utils.isError(value)?value.toString():value}if(captureErrorCause&&error.cause!==void 0&&(extraErrorInfo.cause=utils.isError(error.cause)?error.cause.toString():error.cause),typeof error.toJSON=="function"){let serializedError=error.toJSON();for(let key of Object.keys(serializedError)){let value=serializedError[key];extraErrorInfo[key]=utils.isError(value)?value.toString():value}}return extraErrorInfo}catch(oO){debugBuild.DEBUG_BUILD&&utils.logger.error("Unable to extract extra data from the Error object:",oO)}return null}exports.ExtraErrorData=ExtraErrorData;exports.extraErrorDataIntegration=extraErrorDataIntegration}});var require_localforage=__commonJS({"../../node_modules/.pnpm/localforage@1.10.0/node_modules/localforage/dist/localforage.js"(exports,module){(function(f){if(typeof exports=="object"&&typeof module<"u")module.exports=f();else if(typeof define=="function"&&define.amd)define([],f);else{var g;typeof window<"u"?g=window:typeof global<"u"?g=global:typeof self<"u"?g=self:g=this,g.localforage=f()}})(function(){var define2,module2,exports2;return function e(t,n,r){function s(o2,u){if(!n[o2]){if(!t[o2]){var a=typeof __require=="function"&&__require;if(!u&&a)return a(o2,!0);if(i)return i(o2,!0);var f=new Error("Cannot find module '"+o2+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o2]={exports:{}};t[o2][0].call(l.exports,function(e2){var n2=t[o2][1][e2];return s(n2||e2)},l,l.exports,e,t,n,r)}return n[o2].exports}for(var i=typeof __require=="function"&&__require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(_dereq_,module3,exports3){(function(global2){"use strict";var Mutation=global2.MutationObserver||global2.WebKitMutationObserver,scheduleDrain;if(Mutation){var called=0,observer=new Mutation(nextTick),element=global2.document.createTextNode("");observer.observe(element,{characterData:!0}),scheduleDrain=function(){element.data=called=++called%2}}else if(!global2.setImmediate&&typeof global2.MessageChannel<"u"){var channel=new global2.MessageChannel;channel.port1.onmessage=nextTick,scheduleDrain=function(){channel.port2.postMessage(0)}}else"document"in global2&&"onreadystatechange"in global2.document.createElement("script")?scheduleDrain=function(){var scriptEl=global2.document.createElement("script");scriptEl.onreadystatechange=function(){nextTick(),scriptEl.onreadystatechange=null,scriptEl.parentNode.removeChild(scriptEl),scriptEl=null},global2.document.documentElement.appendChild(scriptEl)}:scheduleDrain=function(){setTimeout(nextTick,0)};var draining,queue=[];function nextTick(){draining=!0;for(var i,oldQueue,len=queue.length;len;){for(oldQueue=queue,queue=[],i=-1;++i<len;)oldQueue[i]();len=queue.length}draining=!1}module3.exports=immediate;function immediate(task){queue.push(task)===1&&!draining&&scheduleDrain()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],2:[function(_dereq_,module3,exports3){"use strict";var immediate=_dereq_(1);function INTERNAL(){}var handlers={},REJECTED=["REJECTED"],FULFILLED=["FULFILLED"],PENDING=["PENDING"];module3.exports=Promise2;function Promise2(resolver){if(typeof resolver!="function")throw new TypeError("resolver must be a function");this.state=PENDING,this.queue=[],this.outcome=void 0,resolver!==INTERNAL&&safelyResolveThenable(this,resolver)}Promise2.prototype.catch=function(onRejected){return this.then(null,onRejected)},Promise2.prototype.then=function(onFulfilled,onRejected){if(typeof onFulfilled!="function"&&this.state===FULFILLED||typeof onRejected!="function"&&this.state===REJECTED)return this;var promise=new this.constructor(INTERNAL);if(this.state!==PENDING){var resolver=this.state===FULFILLED?onFulfilled:onRejected;unwrap(promise,resolver,this.outcome)}else this.queue.push(new QueueItem(promise,onFulfilled,onRejected));return promise};function QueueItem(promise,onFulfilled,onRejected){this.promise=promise,typeof onFulfilled=="function"&&(this.onFulfilled=onFulfilled,this.callFulfilled=this.otherCallFulfilled),typeof onRejected=="function"&&(this.onRejected=onRejected,this.callRejected=this.otherCallRejected)}QueueItem.prototype.callFulfilled=function(value){handlers.resolve(this.promise,value)},QueueItem.prototype.otherCallFulfilled=function(value){unwrap(this.promise,this.onFulfilled,value)},QueueItem.prototype.callRejected=function(value){handlers.reject(this.promise,value)},QueueItem.prototype.otherCallRejected=function(value){unwrap(this.promise,this.onRejected,value)};function unwrap(promise,func,value){immediate(function(){var returnValue;try{returnValue=func(value)}catch(e){return handlers.reject(promise,e)}returnValue===promise?handlers.reject(promise,new TypeError("Cannot resolve promise with itself")):handlers.resolve(promise,returnValue)})}handlers.resolve=function(self2,value){var result=tryCatch(getThen,value);if(result.status==="error")return handlers.reject(self2,result.value);var thenable=result.value;if(thenable)safelyResolveThenable(self2,thenable);else{self2.state=FULFILLED,self2.outcome=value;for(var i=-1,len=self2.queue.length;++i<len;)self2.queue[i].callFulfilled(value)}return self2},handlers.reject=function(self2,error){self2.state=REJECTED,self2.outcome=error;for(var i=-1,len=self2.queue.length;++i<len;)self2.queue[i].callRejected(error);return self2};function getThen(obj){var then=obj&&obj.then;if(obj&&(typeof obj=="object"||typeof obj=="function")&&typeof then=="function")return function(){then.apply(obj,arguments)}}function safelyResolveThenable(self2,thenable){var called=!1;function onError(value){called||(called=!0,handlers.reject(self2,value))}function onSuccess(value){called||(called=!0,handlers.resolve(self2,value))}function tryToUnwrap(){thenable(onSuccess,onError)}var result=tryCatch(tryToUnwrap);result.status==="error"&&onError(result.value)}function tryCatch(func,value){var out={};try{out.value=func(value),out.status="success"}catch(e){out.status="error",out.value=e}return out}Promise2.resolve=resolve;function resolve(value){return value instanceof this?value:handlers.resolve(new this(INTERNAL),value)}Promise2.reject=reject;function reject(reason){var promise=new this(INTERNAL);return handlers.reject(promise,reason)}Promise2.all=all;function all(iterable){var self2=this;if(Object.prototype.toString.call(iterable)!=="[object Array]")return this.reject(new TypeError("must be an array"));var len=iterable.length,called=!1;if(!len)return this.resolve([]);for(var values=new Array(len),resolved=0,i=-1,promise=new this(INTERNAL);++i<len;)allResolver(iterable[i],i);return promise;function allResolver(value,i2){self2.resolve(value).then(resolveFromAll,function(error){called||(called=!0,handlers.reject(promise,error))});function resolveFromAll(outValue){values[i2]=outValue,++resolved===len&&!called&&(called=!0,handlers.resolve(promise,values))}}}Promise2.race=race;function race(iterable){var self2=this;if(Object.prototype.toString.call(iterable)!=="[object Array]")return this.reject(new TypeError("must be an array"));var len=iterable.length,called=!1;if(!len)return this.resolve([]);for(var i=-1,promise=new this(INTERNAL);++i<len;)resolver(iterable[i]);return promise;function resolver(value){self2.resolve(value).then(function(response){called||(called=!0,handlers.resolve(promise,response))},function(error){called||(called=!0,handlers.reject(promise,error))})}}},{1:1}],3:[function(_dereq_,module3,exports3){(function(global2){"use strict";typeof global2.Promise!="function"&&(global2.Promise=_dereq_(2))}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{2:2}],4:[function(_dereq_,module3,exports3){"use strict";var _typeof=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol=="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function getIDB(){try{if(typeof indexedDB<"u")return indexedDB;if(typeof webkitIndexedDB<"u")return webkitIndexedDB;if(typeof mozIndexedDB<"u")return mozIndexedDB;if(typeof OIndexedDB<"u")return OIndexedDB;if(typeof msIndexedDB<"u")return msIndexedDB}catch{return}}var idb=getIDB();function isIndexedDBValid(){try{if(!idb||!idb.open)return!1;var isSafari=typeof openDatabase<"u"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),hasFetch=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!isSafari||hasFetch)&&typeof indexedDB<"u"&&typeof IDBKeyRange<"u"}catch{return!1}}function createBlob(parts,properties){parts=parts||[],properties=properties||{};try{return new Blob(parts,properties)}catch(e){if(e.name!=="TypeError")throw e;for(var Builder=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,builder=new Builder,i=0;i<parts.length;i+=1)builder.append(parts[i]);return builder.getBlob(properties.type)}}typeof Promise>"u"&&_dereq_(3);var Promise$1=Promise;function executeCallback(promise,callback){callback&&promise.then(function(result){callback(null,result)},function(error){callback(error)})}function executeTwoCallbacks(promise,callback,errorCallback){typeof callback=="function"&&promise.then(callback),typeof errorCallback=="function"&&promise.catch(errorCallback)}function normalizeKey(key2){return typeof key2!="string"&&(console.warn(key2+" used as a key, but it is not a string."),key2=String(key2)),key2}function getCallback(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var DETECT_BLOB_SUPPORT_STORE="local-forage-detect-blob-support",supportsBlobs=void 0,dbContexts={},toString=Object.prototype.toString,READ_ONLY="readonly",READ_WRITE="readwrite";function _binStringToArrayBuffer(bin){for(var length2=bin.length,buf=new ArrayBuffer(length2),arr=new Uint8Array(buf),i=0;i<length2;i++)arr[i]=bin.charCodeAt(i);return buf}function _checkBlobSupportWithoutCaching(idb2){return new Promise$1(function(resolve){var txn=idb2.transaction(DETECT_BLOB_SUPPORT_STORE,READ_WRITE),blob=createBlob([""]);txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob,"key"),txn.onabort=function(e){e.preventDefault(),e.stopPropagation(),resolve(!1)},txn.oncomplete=function(){var matchedChrome=navigator.userAgent.match(/Chrome\/(\d+)/),matchedEdge=navigator.userAgent.match(/Edge\//);resolve(matchedEdge||!matchedChrome||parseInt(matchedChrome[1],10)>=43)}}).catch(function(){return!1})}function _checkBlobSupport(idb2){return typeof supportsBlobs=="boolean"?Promise$1.resolve(supportsBlobs):_checkBlobSupportWithoutCaching(idb2).then(function(value){return supportsBlobs=value,supportsBlobs})}function _deferReadiness(dbInfo){var dbContext=dbContexts[dbInfo.name],deferredOperation={};deferredOperation.promise=new Promise$1(function(resolve,reject){deferredOperation.resolve=resolve,deferredOperation.reject=reject}),dbContext.deferredOperations.push(deferredOperation),dbContext.dbReady?dbContext.dbReady=dbContext.dbReady.then(function(){return deferredOperation.promise}):dbContext.dbReady=deferredOperation.promise}function _advanceReadiness(dbInfo){var dbContext=dbContexts[dbInfo.name],deferredOperation=dbContext.deferredOperations.pop();if(deferredOperation)return deferredOperation.resolve(),deferredOperation.promise}function _rejectReadiness(dbInfo,err){var dbContext=dbContexts[dbInfo.name],deferredOperation=dbContext.deferredOperations.pop();if(deferredOperation)return deferredOperation.reject(err),deferredOperation.promise}function _getConnection(dbInfo,upgradeNeeded){return new Promise$1(function(resolve,reject){if(dbContexts[dbInfo.name]=dbContexts[dbInfo.name]||createDbContext(),dbInfo.db)if(upgradeNeeded)_deferReadiness(dbInfo),dbInfo.db.close();else return resolve(dbInfo.db);var dbArgs=[dbInfo.name];upgradeNeeded&&dbArgs.push(dbInfo.version);var openreq=idb.open.apply(idb,dbArgs);upgradeNeeded&&(openreq.onupgradeneeded=function(e){var db=openreq.result;try{db.createObjectStore(dbInfo.storeName),e.oldVersion<=1&&db.createObjectStore(DETECT_BLOB_SUPPORT_STORE)}catch(ex){if(ex.name==="ConstraintError")console.warn('The database "'+dbInfo.name+'" has been upgraded from version '+e.oldVersion+" to version "+e.newVersion+', but the storage "'+dbInfo.storeName+'" already exists.');else throw ex}}),openreq.onerror=function(e){e.preventDefault(),reject(openreq.error)},openreq.onsuccess=function(){var db=openreq.result;db.onversionchange=function(e){e.target.close()},resolve(db),_advanceReadiness(dbInfo)}})}function _getOriginalConnection(dbInfo){return _getConnection(dbInfo,!1)}function _getUpgradedConnection(dbInfo){return _getConnection(dbInfo,!0)}function _isUpgradeNeeded(dbInfo,defaultVersion){if(!dbInfo.db)return!0;var isNewStore=!dbInfo.db.objectStoreNames.contains(dbInfo.storeName),isDowngrade=dbInfo.version<dbInfo.db.version,isUpgrade=dbInfo.version>dbInfo.db.version;if(isDowngrade&&(dbInfo.version!==defaultVersion&&console.warn('The database "'+dbInfo.name+`" can't be downgraded from version `+dbInfo.db.version+" to version "+dbInfo.version+"."),dbInfo.version=dbInfo.db.version),isUpgrade||isNewStore){if(isNewStore){var incVersion=dbInfo.db.version+1;incVersion>dbInfo.version&&(dbInfo.version=incVersion)}return!0}return!1}function _encodeBlob(blob){return new Promise$1(function(resolve,reject){var reader=new FileReader;reader.onerror=reject,reader.onloadend=function(e){var base64=btoa(e.target.result||"");resolve({__local_forage_encoded_blob:!0,data:base64,type:blob.type})},reader.readAsBinaryString(blob)})}function _decodeBlob(encodedBlob){var arrayBuff=_binStringToArrayBuffer(atob(encodedBlob.data));return createBlob([arrayBuff],{type:encodedBlob.type})}function _isEncodedBlob(value){return value&&value.__local_forage_encoded_blob}function _fullyReady(callback){var self2=this,promise=self2._initReady().then(function(){var dbContext=dbContexts[self2._dbInfo.name];if(dbContext&&dbContext.dbReady)return dbContext.dbReady});return executeTwoCallbacks(promise,callback,callback),promise}function _tryReconnect(dbInfo){_deferReadiness(dbInfo);for(var dbContext=dbContexts[dbInfo.name],forages=dbContext.forages,i=0;i<forages.length;i++){var forage=forages[i];forage._dbInfo.db&&(forage._dbInfo.db.close(),forage._dbInfo.db=null)}return dbInfo.db=null,_getOriginalConnection(dbInfo).then(function(db){return dbInfo.db=db,_isUpgradeNeeded(dbInfo)?_getUpgradedConnection(dbInfo):db}).then(function(db){dbInfo.db=dbContext.db=db;for(var i2=0;i2<forages.length;i2++)forages[i2]._dbInfo.db=db}).catch(function(err){throw _rejectReadiness(dbInfo,err),err})}function createTransaction(dbInfo,mode,callback,retries){retries===void 0&&(retries=1);try{var tx=dbInfo.db.transaction(dbInfo.storeName,mode);callback(null,tx)}catch(err){if(retries>0&&(!dbInfo.db||err.name==="InvalidStateError"||err.name==="NotFoundError"))return Promise$1.resolve().then(function(){if(!dbInfo.db||err.name==="NotFoundError"&&!dbInfo.db.objectStoreNames.contains(dbInfo.storeName)&&dbInfo.version<=dbInfo.db.version)return dbInfo.db&&(dbInfo.version=dbInfo.db.version+1),_getUpgradedConnection(dbInfo)}).then(function(){return _tryReconnect(dbInfo).then(function(){createTransaction(dbInfo,mode,callback,retries-1)})}).catch(callback);callback(err)}}function createDbContext(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function _initStorage(options){var self2=this,dbInfo={db:null};if(options)for(var i in options)dbInfo[i]=options[i];var dbContext=dbContexts[dbInfo.name];dbContext||(dbContext=createDbContext(),dbContexts[dbInfo.name]=dbContext),dbContext.forages.push(self2),self2._initReady||(self2._initReady=self2.ready,self2.ready=_fullyReady);var initPromises=[];function ignoreErrors(){return Promise$1.resolve()}for(var j=0;j<dbContext.forages.length;j++){var forage=dbContext.forages[j];forage!==self2&&initPromises.push(forage._initReady().catch(ignoreErrors))}var forages=dbContext.forages.slice(0);return Promise$1.all(initPromises).then(function(){return dbInfo.db=dbContext.db,_getOriginalConnection(dbInfo)}).then(function(db){return dbInfo.db=db,_isUpgradeNeeded(dbInfo,self2._defaultConfig.version)?_getUpgradedConnection(dbInfo):db}).then(function(db){dbInfo.db=dbContext.db=db,self2._dbInfo=dbInfo;for(var k=0;k<forages.length;k++){var forage2=forages[k];forage2!==self2&&(forage2._dbInfo.db=dbInfo.db,forage2._dbInfo.version=dbInfo.version)}})}function getItem(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_ONLY,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.get(key2);req.onsuccess=function(){var value=req.result;value===void 0&&(value=null),_isEncodedBlob(value)&&(value=_decodeBlob(value)),resolve(value)},req.onerror=function(){reject(req.error)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function iterate(iterator,callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_ONLY,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.openCursor(),iterationNumber=1;req.onsuccess=function(){var cursor=req.result;if(cursor){var value=cursor.value;_isEncodedBlob(value)&&(value=_decodeBlob(value));var result=iterator(value,cursor.key,iterationNumber++);result!==void 0?resolve(result):cursor.continue()}else resolve()},req.onerror=function(){reject(req.error)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function setItem(key2,value,callback){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){var dbInfo;self2.ready().then(function(){return dbInfo=self2._dbInfo,toString.call(value)==="[object Blob]"?_checkBlobSupport(dbInfo.db).then(function(blobSupport){return blobSupport?value:_encodeBlob(value)}):value}).then(function(value2){createTransaction(self2._dbInfo,READ_WRITE,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName);value2===null&&(value2=void 0);var req=store.put(value2,key2);transaction.oncomplete=function(){value2===void 0&&(value2=null),resolve(value2)},transaction.onabort=transaction.onerror=function(){var err2=req.error?req.error:req.transaction.error;reject(err2)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function removeItem(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_WRITE,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.delete(key2);transaction.oncomplete=function(){resolve()},transaction.onerror=function(){reject(req.error)},transaction.onabort=function(){var err2=req.error?req.error:req.transaction.error;reject(err2)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function clear(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_WRITE,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.clear();transaction.oncomplete=function(){resolve()},transaction.onabort=transaction.onerror=function(){var err2=req.error?req.error:req.transaction.error;reject(err2)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function length(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_ONLY,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.count();req.onsuccess=function(){resolve(req.result)},req.onerror=function(){reject(req.error)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function key(n,callback){var self2=this,promise=new Promise$1(function(resolve,reject){if(n<0){resolve(null);return}self2.ready().then(function(){createTransaction(self2._dbInfo,READ_ONLY,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),advanced=!1,req=store.openKeyCursor();req.onsuccess=function(){var cursor=req.result;if(!cursor){resolve(null);return}n===0||advanced?resolve(cursor.key):(advanced=!0,cursor.advance(n))},req.onerror=function(){reject(req.error)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function keys(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){createTransaction(self2._dbInfo,READ_ONLY,function(err,transaction){if(err)return reject(err);try{var store=transaction.objectStore(self2._dbInfo.storeName),req=store.openKeyCursor(),keys2=[];req.onsuccess=function(){var cursor=req.result;if(!cursor){resolve(keys2);return}keys2.push(cursor.key),cursor.continue()},req.onerror=function(){reject(req.error)}}catch(e){reject(e)}})}).catch(reject)});return executeCallback(promise,callback),promise}function dropInstance(options,callback){callback=getCallback.apply(this,arguments);var currentConfig=this.config();options=typeof options!="function"&&options||{},options.name||(options.name=options.name||currentConfig.name,options.storeName=options.storeName||currentConfig.storeName);var self2=this,promise;if(!options.name)promise=Promise$1.reject("Invalid arguments");else{var isCurrentDb=options.name===currentConfig.name&&self2._dbInfo.db,dbPromise=isCurrentDb?Promise$1.resolve(self2._dbInfo.db):_getOriginalConnection(options).then(function(db){var dbContext=dbContexts[options.name],forages=dbContext.forages;dbContext.db=db;for(var i=0;i<forages.length;i++)forages[i]._dbInfo.db=db;return db});options.storeName?promise=dbPromise.then(function(db){if(db.objectStoreNames.contains(options.storeName)){var newVersion=db.version+1;_deferReadiness(options);var dbContext=dbContexts[options.name],forages=dbContext.forages;db.close();for(var i=0;i<forages.length;i++){var forage=forages[i];forage._dbInfo.db=null,forage._dbInfo.version=newVersion}var dropObjectPromise=new Promise$1(function(resolve,reject){var req=idb.open(options.name,newVersion);req.onerror=function(err){var db2=req.result;db2.close(),reject(err)},req.onupgradeneeded=function(){var db2=req.result;db2.deleteObjectStore(options.storeName)},req.onsuccess=function(){var db2=req.result;db2.close(),resolve(db2)}});return dropObjectPromise.then(function(db2){dbContext.db=db2;for(var j=0;j<forages.length;j++){var _forage2=forages[j];_forage2._dbInfo.db=db2,_advanceReadiness(_forage2._dbInfo)}}).catch(function(err){throw(_rejectReadiness(options,err)||Promise$1.resolve()).catch(function(){}),err})}}):promise=dbPromise.then(function(db){_deferReadiness(options);var dbContext=dbContexts[options.name],forages=dbContext.forages;db.close();for(var i=0;i<forages.length;i++){var forage=forages[i];forage._dbInfo.db=null}var dropDBPromise=new Promise$1(function(resolve,reject){var req=idb.deleteDatabase(options.name);req.onerror=function(){var db2=req.result;db2&&db2.close(),reject(req.error)},req.onblocked=function(){console.warn('dropInstance blocked for database "'+options.name+'" until all open connections are closed')},req.onsuccess=function(){var db2=req.result;db2&&db2.close(),resolve(db2)}});return dropDBPromise.then(function(db2){dbContext.db=db2;for(var i2=0;i2<forages.length;i2++){var _forage=forages[i2];_advanceReadiness(_forage._dbInfo)}}).catch(function(err){throw(_rejectReadiness(options,err)||Promise$1.resolve()).catch(function(){}),err})})}return executeCallback(promise,callback),promise}var asyncStorage={_driver:"asyncStorage",_initStorage,_support:isIndexedDBValid(),iterate,getItem,setItem,removeItem,clear,length,key,keys,dropInstance};function isWebSQLValid(){return typeof openDatabase=="function"}var BASE_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",BLOB_TYPE_PREFIX="~~local_forage_type~",BLOB_TYPE_PREFIX_REGEX=/^~~local_forage_type~([^~]+)~/,SERIALIZED_MARKER="__lfsc__:",SERIALIZED_MARKER_LENGTH=SERIALIZED_MARKER.length,TYPE_ARRAYBUFFER="arbf",TYPE_BLOB="blob",TYPE_INT8ARRAY="si08",TYPE_UINT8ARRAY="ui08",TYPE_UINT8CLAMPEDARRAY="uic8",TYPE_INT16ARRAY="si16",TYPE_INT32ARRAY="si32",TYPE_UINT16ARRAY="ur16",TYPE_UINT32ARRAY="ui32",TYPE_FLOAT32ARRAY="fl32",TYPE_FLOAT64ARRAY="fl64",TYPE_SERIALIZED_MARKER_LENGTH=SERIALIZED_MARKER_LENGTH+TYPE_ARRAYBUFFER.length,toString$1=Object.prototype.toString;function stringToBuffer(serializedString){var bufferLength=serializedString.length*.75,len=serializedString.length,i,p=0,encoded1,encoded2,encoded3,encoded4;serializedString[serializedString.length-1]==="="&&(bufferLength--,serializedString[serializedString.length-2]==="="&&bufferLength--);var buffer=new ArrayBuffer(bufferLength),bytes=new Uint8Array(buffer);for(i=0;i<len;i+=4)encoded1=BASE_CHARS.indexOf(serializedString[i]),encoded2=BASE_CHARS.indexOf(serializedString[i+1]),encoded3=BASE_CHARS.indexOf(serializedString[i+2]),encoded4=BASE_CHARS.indexOf(serializedString[i+3]),bytes[p++]=encoded1<<2|encoded2>>4,bytes[p++]=(encoded2&15)<<4|encoded3>>2,bytes[p++]=(encoded3&3)<<6|encoded4&63;return buffer}function bufferToString(buffer){var bytes=new Uint8Array(buffer),base64String="",i;for(i=0;i<bytes.length;i+=3)base64String+=BASE_CHARS[bytes[i]>>2],base64String+=BASE_CHARS[(bytes[i]&3)<<4|bytes[i+1]>>4],base64String+=BASE_CHARS[(bytes[i+1]&15)<<2|bytes[i+2]>>6],base64String+=BASE_CHARS[bytes[i+2]&63];return bytes.length%3===2?base64String=base64String.substring(0,base64String.length-1)+"=":bytes.length%3===1&&(base64String=base64String.substring(0,base64String.length-2)+"=="),base64String}function serialize(value,callback){var valueType="";if(value&&(valueType=toString$1.call(value)),value&&(valueType==="[object ArrayBuffer]"||value.buffer&&toString$1.call(value.buffer)==="[object ArrayBuffer]")){var buffer,marker=SERIALIZED_MARKER;value instanceof ArrayBuffer?(buffer=value,marker+=TYPE_ARRAYBUFFER):(buffer=value.buffer,valueType==="[object Int8Array]"?marker+=TYPE_INT8ARRAY:valueType==="[object Uint8Array]"?marker+=TYPE_UINT8ARRAY:valueType==="[object Uint8ClampedArray]"?marker+=TYPE_UINT8CLAMPEDARRAY:valueType==="[object Int16Array]"?marker+=TYPE_INT16ARRAY:valueType==="[object Uint16Array]"?marker+=TYPE_UINT16ARRAY:valueType==="[object Int32Array]"?marker+=TYPE_INT32ARRAY:valueType==="[object Uint32Array]"?marker+=TYPE_UINT32ARRAY:valueType==="[object Float32Array]"?marker+=TYPE_FLOAT32ARRAY:valueType==="[object Float64Array]"?marker+=TYPE_FLOAT64ARRAY:callback(new Error("Failed to get type for BinaryArray"))),callback(marker+bufferToString(buffer))}else if(valueType==="[object Blob]"){var fileReader=new FileReader;fileReader.onload=function(){var str=BLOB_TYPE_PREFIX+value.type+"~"+bufferToString(this.result);callback(SERIALIZED_MARKER+TYPE_BLOB+str)},fileReader.readAsArrayBuffer(value)}else try{callback(JSON.stringify(value))}catch(e){console.error("Couldn't convert value into a JSON string: ",value),callback(null,e)}}function deserialize(value){if(value.substring(0,SERIALIZED_MARKER_LENGTH)!==SERIALIZED_MARKER)return JSON.parse(value);var serializedString=value.substring(TYPE_SERIALIZED_MARKER_LENGTH),type=value.substring(SERIALIZED_MARKER_LENGTH,TYPE_SERIALIZED_MARKER_LENGTH),blobType;if(type===TYPE_BLOB&&BLOB_TYPE_PREFIX_REGEX.test(serializedString)){var matcher=serializedString.match(BLOB_TYPE_PREFIX_REGEX);blobType=matcher[1],serializedString=serializedString.substring(matcher[0].length)}var buffer=stringToBuffer(serializedString);switch(type){case TYPE_ARRAYBUFFER:return buffer;case TYPE_BLOB:return createBlob([buffer],{type:blobType});case TYPE_INT8ARRAY:return new Int8Array(buffer);case TYPE_UINT8ARRAY:return new Uint8Array(buffer);case TYPE_UINT8CLAMPEDARRAY:return new Uint8ClampedArray(buffer);case TYPE_INT16ARRAY:return new Int16Array(buffer);case TYPE_UINT16ARRAY:return new Uint16Array(buffer);case TYPE_INT32ARRAY:return new Int32Array(buffer);case TYPE_UINT32ARRAY:return new Uint32Array(buffer);case TYPE_FLOAT32ARRAY:return new Float32Array(buffer);case TYPE_FLOAT64ARRAY:return new Float64Array(buffer);default:throw new Error("Unkown type: "+type)}}var localforageSerializer={serialize,deserialize,stringToBuffer,bufferToString};function createDbTable(t,dbInfo,callback,errorCallback){t.executeSql("CREATE TABLE IF NOT EXISTS "+dbInfo.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],callback,errorCallback)}function _initStorage$1(options){var self2=this,dbInfo={db:null};if(options)for(var i in options)dbInfo[i]=typeof options[i]!="string"?options[i].toString():options[i];var dbInfoPromise=new Promise$1(function(resolve,reject){try{dbInfo.db=openDatabase(dbInfo.name,String(dbInfo.version),dbInfo.description,dbInfo.size)}catch(e){return reject(e)}dbInfo.db.transaction(function(t){createDbTable(t,dbInfo,function(){self2._dbInfo=dbInfo,resolve()},function(t2,error){reject(error)})},reject)});return dbInfo.serializer=localforageSerializer,dbInfoPromise}function tryExecuteSql(t,dbInfo,sqlStatement,args,callback,errorCallback){t.executeSql(sqlStatement,args,callback,function(t2,error){error.code===error.SYNTAX_ERR?t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[dbInfo.storeName],function(t3,results){results.rows.length?errorCallback(t3,error):createDbTable(t3,dbInfo,function(){t3.executeSql(sqlStatement,args,callback,errorCallback)},errorCallback)},errorCallback):errorCallback(t2,error)},errorCallback)}function getItem$1(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"SELECT * FROM "+dbInfo.storeName+" WHERE key = ? LIMIT 1",[key2],function(t2,results){var result=results.rows.length?results.rows.item(0).value:null;result&&(result=dbInfo.serializer.deserialize(result)),resolve(result)},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function iterate$1(iterator,callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"SELECT * FROM "+dbInfo.storeName,[],function(t2,results){for(var rows=results.rows,length2=rows.length,i=0;i<length2;i++){var item=rows.item(i),result=item.value;if(result&&(result=dbInfo.serializer.deserialize(result)),result=iterator(result,item.key,i+1),result!==void 0){resolve(result);return}}resolve()},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function _setItem(key2,value,callback,retriesLeft){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){value===void 0&&(value=null);var originalValue=value,dbInfo=self2._dbInfo;dbInfo.serializer.serialize(value,function(value2,error){error?reject(error):dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"INSERT OR REPLACE INTO "+dbInfo.storeName+" (key, value) VALUES (?, ?)",[key2,value2],function(){resolve(originalValue)},function(t2,error2){reject(error2)})},function(sqlError){if(sqlError.code===sqlError.QUOTA_ERR){if(retriesLeft>0){resolve(_setItem.apply(self2,[key2,originalValue,callback,retriesLeft-1]));return}reject(sqlError)}})})}).catch(reject)});return executeCallback(promise,callback),promise}function setItem$1(key2,value,callback){return _setItem.apply(this,[key2,value,callback,1])}function removeItem$1(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"DELETE FROM "+dbInfo.storeName+" WHERE key = ?",[key2],function(){resolve()},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function clear$1(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"DELETE FROM "+dbInfo.storeName,[],function(){resolve()},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function length$1(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"SELECT COUNT(key) as c FROM "+dbInfo.storeName,[],function(t2,results){var result=results.rows.item(0).c;resolve(result)},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function key$1(n,callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"SELECT key FROM "+dbInfo.storeName+" WHERE id = ? LIMIT 1",[n+1],function(t2,results){var result=results.rows.length?results.rows.item(0).key:null;resolve(result)},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function keys$1(callback){var self2=this,promise=new Promise$1(function(resolve,reject){self2.ready().then(function(){var dbInfo=self2._dbInfo;dbInfo.db.transaction(function(t){tryExecuteSql(t,dbInfo,"SELECT key FROM "+dbInfo.storeName,[],function(t2,results){for(var keys2=[],i=0;i<results.rows.length;i++)keys2.push(results.rows.item(i).key);resolve(keys2)},function(t2,error){reject(error)})})}).catch(reject)});return executeCallback(promise,callback),promise}function getAllStoreNames(db){return new Promise$1(function(resolve,reject){db.transaction(function(t){t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(t2,results){for(var storeNames=[],i=0;i<results.rows.length;i++)storeNames.push(results.rows.item(i).name);resolve({db,storeNames})},function(t2,error){reject(error)})},function(sqlError){reject(sqlError)})})}function dropInstance$1(options,callback){callback=getCallback.apply(this,arguments);var currentConfig=this.config();options=typeof options!="function"&&options||{},options.name||(options.name=options.name||currentConfig.name,options.storeName=options.storeName||currentConfig.storeName);var self2=this,promise;return options.name?promise=new Promise$1(function(resolve){var db;options.name===currentConfig.name?db=self2._dbInfo.db:db=openDatabase(options.name,"","",0),options.storeName?resolve({db,storeNames:[options.storeName]}):resolve(getAllStoreNames(db))}).then(function(operationInfo){return new Promise$1(function(resolve,reject){operationInfo.db.transaction(function(t){function dropTable(storeName){return new Promise$1(function(resolve2,reject2){t.executeSql("DROP TABLE IF EXISTS "+storeName,[],function(){resolve2()},function(t2,error){reject2(error)})})}for(var operations=[],i=0,len=operationInfo.storeNames.length;i<len;i++)operations.push(dropTable(operationInfo.storeNames[i]));Promise$1.all(operations).then(function(){resolve()}).catch(function(e){reject(e)})},function(sqlError){reject(sqlError)})})}):promise=Promise$1.reject("Invalid arguments"),executeCallback(promise,callback),promise}var webSQLStorage={_driver:"webSQLStorage",_initStorage:_initStorage$1,_support:isWebSQLValid(),iterate:iterate$1,getItem:getItem$1,setItem:setItem$1,removeItem:removeItem$1,clear:clear$1,length:length$1,key:key$1,keys:keys$1,dropInstance:dropInstance$1};function isLocalStorageValid(){try{return typeof localStorage<"u"&&"setItem"in localStorage&&!!localStorage.setItem}catch{return!1}}function _getKeyPrefix(options,defaultConfig){var keyPrefix=options.name+"/";return options.storeName!==defaultConfig.storeName&&(keyPrefix+=options.storeName+"/"),keyPrefix}function checkIfLocalStorageThrows(){var localStorageTestKey="_localforage_support_test";try{return localStorage.setItem(localStorageTestKey,!0),localStorage.removeItem(localStorageTestKey),!1}catch{return!0}}function _isLocalStorageUsable(){return!checkIfLocalStorageThrows()||localStorage.length>0}function _initStorage$2(options){var self2=this,dbInfo={};if(options)for(var i in options)dbInfo[i]=options[i];return dbInfo.keyPrefix=_getKeyPrefix(options,self2._defaultConfig),_isLocalStorageUsable()?(self2._dbInfo=dbInfo,dbInfo.serializer=localforageSerializer,Promise$1.resolve()):Promise$1.reject()}function clear$2(callback){var self2=this,promise=self2.ready().then(function(){for(var keyPrefix=self2._dbInfo.keyPrefix,i=localStorage.length-1;i>=0;i--){var key2=localStorage.key(i);key2.indexOf(keyPrefix)===0&&localStorage.removeItem(key2)}});return executeCallback(promise,callback),promise}function getItem$2(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=self2.ready().then(function(){var dbInfo=self2._dbInfo,result=localStorage.getItem(dbInfo.keyPrefix+key2);return result&&(result=dbInfo.serializer.deserialize(result)),result});return executeCallback(promise,callback),promise}function iterate$2(iterator,callback){var self2=this,promise=self2.ready().then(function(){for(var dbInfo=self2._dbInfo,keyPrefix=dbInfo.keyPrefix,keyPrefixLength=keyPrefix.length,length2=localStorage.length,iterationNumber=1,i=0;i<length2;i++){var key2=localStorage.key(i);if(key2.indexOf(keyPrefix)===0){var value=localStorage.getItem(key2);if(value&&(value=dbInfo.serializer.deserialize(value)),value=iterator(value,key2.substring(keyPrefixLength),iterationNumber++),value!==void 0)return value}}});return executeCallback(promise,callback),promise}function key$2(n,callback){var self2=this,promise=self2.ready().then(function(){var dbInfo=self2._dbInfo,result;try{result=localStorage.key(n)}catch{result=null}return result&&(result=result.substring(dbInfo.keyPrefix.length)),result});return executeCallback(promise,callback),promise}function keys$2(callback){var self2=this,promise=self2.ready().then(function(){for(var dbInfo=self2._dbInfo,length2=localStorage.length,keys2=[],i=0;i<length2;i++){var itemKey=localStorage.key(i);itemKey.indexOf(dbInfo.keyPrefix)===0&&keys2.push(itemKey.substring(dbInfo.keyPrefix.length))}return keys2});return executeCallback(promise,callback),promise}function length$2(callback){var self2=this,promise=self2.keys().then(function(keys2){return keys2.length});return executeCallback(promise,callback),promise}function removeItem$2(key2,callback){var self2=this;key2=normalizeKey(key2);var promise=self2.ready().then(function(){var dbInfo=self2._dbInfo;localStorage.removeItem(dbInfo.keyPrefix+key2)});return executeCallback(promise,callback),promise}function setItem$2(key2,value,callback){var self2=this;key2=normalizeKey(key2);var promise=self2.ready().then(function(){value===void 0&&(value=null);var originalValue=value;return new Promise$1(function(resolve,reject){var dbInfo=self2._dbInfo;dbInfo.serializer.serialize(value,function(value2,error){if(error)reject(error);else try{localStorage.setItem(dbInfo.keyPrefix+key2,value2),resolve(originalValue)}catch(e){(e.name==="QuotaExceededError"||e.name==="NS_ERROR_DOM_QUOTA_REACHED")&&reject(e),reject(e)}})})});return executeCallback(promise,callback),promise}function dropInstance$2(options,callback){if(callback=getCallback.apply(this,arguments),options=typeof options!="function"&&options||{},!options.name){var currentConfig=this.config();options.name=options.name||currentConfig.name,options.storeName=options.storeName||currentConfig.storeName}var self2=this,promise;return options.name?promise=new Promise$1(function(resolve){options.storeName?resolve(_getKeyPrefix(options,self2._defaultConfig)):resolve(options.name+"/")}).then(function(keyPrefix){for(var i=localStorage.length-1;i>=0;i--){var key2=localStorage.key(i);key2.indexOf(keyPrefix)===0&&localStorage.removeItem(key2)}}):promise=Promise$1.reject("Invalid arguments"),executeCallback(promise,callback),promise}var localStorageWrapper={_driver:"localStorageWrapper",_initStorage:_initStorage$2,_support:isLocalStorageValid(),iterate:iterate$2,getItem:getItem$2,setItem:setItem$2,removeItem:removeItem$2,clear:clear$2,length:length$2,key:key$2,keys:keys$2,dropInstance:dropInstance$2},sameValue=function(x,y){return x===y||typeof x=="number"&&typeof y=="number"&&isNaN(x)&&isNaN(y)},includes=function(array,searchElement){for(var len=array.length,i=0;i<len;){if(sameValue(array[i],searchElement))return!0;i++}return!1},isArray=Array.isArray||function(arg){return Object.prototype.toString.call(arg)==="[object Array]"},DefinedDrivers={},DriverSupport={},DefaultDrivers={INDEXEDDB:asyncStorage,WEBSQL:webSQLStorage,LOCALSTORAGE:localStorageWrapper},DefaultDriverOrder=[DefaultDrivers.INDEXEDDB._driver,DefaultDrivers.WEBSQL._driver,DefaultDrivers.LOCALSTORAGE._driver],OptionalDriverMethods=["dropInstance"],LibraryMethods=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(OptionalDriverMethods),DefaultConfig={description:"",driver:DefaultDriverOrder.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function callWhenReady(localForageInstance,libraryMethod){localForageInstance[libraryMethod]=function(){var _args=arguments;return localForageInstance.ready().then(function(){return localForageInstance[libraryMethod].apply(localForageInstance,_args)})}}function extend(){for(var i=1;i<arguments.length;i++){var arg=arguments[i];if(arg)for(var _key in arg)arg.hasOwnProperty(_key)&&(isArray(arg[_key])?arguments[0][_key]=arg[_key].slice():arguments[0][_key]=arg[_key])}return arguments[0]}var LocalForage=function(){function LocalForage2(options){_classCallCheck(this,LocalForage2);for(var driverTypeKey in DefaultDrivers)if(DefaultDrivers.hasOwnProperty(driverTypeKey)){var driver=DefaultDrivers[driverTypeKey],driverName=driver._driver;this[driverTypeKey]=driverName,DefinedDrivers[driverName]||this.defineDriver(driver)}this._defaultConfig=extend({},DefaultConfig),this._config=extend({},this._defaultConfig,options),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch(function(){})}return LocalForage2.prototype.config=function(options){if((typeof options>"u"?"undefined":_typeof(options))==="object"){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var i in options){if(i==="storeName"&&(options[i]=options[i].replace(/\W/g,"_")),i==="version"&&typeof options[i]!="number")return new Error("Database version must be a number.");this._config[i]=options[i]}return"driver"in options&&options.driver?this.setDriver(this._config.driver):!0}else return typeof options=="string"?this._config[options]:this._config},LocalForage2.prototype.defineDriver=function(driverObject,callback,errorCallback){var promise=new Promise$1(function(resolve,reject){try{var driverName=driverObject._driver,complianceError=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!driverObject._driver){reject(complianceError);return}for(var driverMethods=LibraryMethods.concat("_initStorage"),i=0,len=driverMethods.length;i<len;i++){var driverMethodName=driverMethods[i],isRequired=!includes(OptionalDriverMethods,driverMethodName);if((isRequired||driverObject[driverMethodName])&&typeof driverObject[driverMethodName]!="function"){reject(complianceError);return}}var configureMissingMethods=function(){for(var methodNotImplementedFactory=function(methodName){return function(){var error=new Error("Method "+methodName+" is not implemented by the current driver"),promise2=Promise$1.reject(error);return executeCallback(promise2,arguments[arguments.length-1]),promise2}},_i=0,_len=OptionalDriverMethods.length;_i<_len;_i++){var optionalDriverMethod=OptionalDriverMethods[_i];driverObject[optionalDriverMethod]||(driverObject[optionalDriverMethod]=methodNotImplementedFactory(optionalDriverMethod))}};configureMissingMethods();var setDriverSupport=function(support){DefinedDrivers[driverName]&&console.info("Redefining LocalForage driver: "+driverName),DefinedDrivers[driverName]=driverObject,DriverSupport[driverName]=support,resolve()};"_support"in driverObject?driverObject._support&&typeof driverObject._support=="function"?driverObject._support().then(setDriverSupport,reject):setDriverSupport(!!driverObject._support):setDriverSupport(!0)}catch(e){reject(e)}});return executeTwoCallbacks(promise,callback,errorCallback),promise},LocalForage2.prototype.driver=function(){return this._driver||null},LocalForage2.prototype.getDriver=function(driverName,callback,errorCallback){var getDriverPromise=DefinedDrivers[driverName]?Promise$1.resolve(DefinedDrivers[driverName]):Promise$1.reject(new Error("Driver not found."));return executeTwoCallbacks(getDriverPromise,callback,errorCallback),getDriverPromise},LocalForage2.prototype.getSerializer=function(callback){var serializerPromise=Promise$1.resolve(localforageSerializer);return executeTwoCallbacks(serializerPromise,callback),serializerPromise},LocalForage2.prototype.ready=function(callback){var self2=this,promise=self2._driverSet.then(function(){return self2._ready===null&&(self2._ready=self2._initDriver()),self2._ready});return executeTwoCallbacks(promise,callback,callback),promise},LocalForage2.prototype.setDriver=function(drivers,callback,errorCallback){var self2=this;isArray(drivers)||(drivers=[drivers]);var supportedDrivers=this._getSupportedDrivers(drivers);function setDriverToConfig(){self2._config.driver=self2.driver()}function extendSelfWithDriver(driver){return self2._extend(driver),setDriverToConfig(),self2._ready=self2._initStorage(self2._config),self2._ready}function initDriver(supportedDrivers2){return function(){var currentDriverIndex=0;function driverPromiseLoop(){for(;currentDriverIndex<supportedDrivers2.length;){var driverName=supportedDrivers2[currentDriverIndex];return currentDriverIndex++,self2._dbInfo=null,self2._ready=null,self2.getDriver(driverName).then(extendSelfWithDriver).catch(driverPromiseLoop)}setDriverToConfig();var error=new Error("No available storage method found.");return self2._driverSet=Promise$1.reject(error),self2._driverSet}return driverPromiseLoop()}}var oldDriverSetDone=this._driverSet!==null?this._driverSet.catch(function(){return Promise$1.resolve()}):Promise$1.resolve();return this._driverSet=oldDriverSetDone.then(function(){var driverName=supportedDrivers[0];return self2._dbInfo=null,self2._ready=null,self2.getDriver(driverName).then(function(driver){self2._driver=driver._driver,setDriverToConfig(),self2._wrapLibraryMethodsWithReady(),self2._initDriver=initDriver(supportedDrivers)})}).catch(function(){setDriverToConfig();var error=new Error("No available storage method found.");return self2._driverSet=Promise$1.reject(error),self2._driverSet}),executeTwoCallbacks(this._driverSet,callback,errorCallback),this._driverSet},LocalForage2.prototype.supports=function(driverName){return!!DriverSupport[driverName]},LocalForage2.prototype._extend=function(libraryMethodsAndProperties){extend(this,libraryMethodsAndProperties)},LocalForage2.prototype._getSupportedDrivers=function(drivers){for(var supportedDrivers=[],i=0,len=drivers.length;i<len;i++){var driverName=drivers[i];this.supports(driverName)&&supportedDrivers.push(driverName)}return supportedDrivers},LocalForage2.prototype._wrapLibraryMethodsWithReady=function(){for(var i=0,len=LibraryMethods.length;i<len;i++)callWhenReady(this,LibraryMethods[i])},LocalForage2.prototype.createInstance=function(options){return new LocalForage2(options)},LocalForage2}(),localforage_js=new LocalForage;module3.exports=localforage_js},{3:3}]},{},[4])(4)})}});var require_offline2=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/offline.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var utils=require_cjs(),localForage=require_localforage(),debugBuild=require_debug_build5(),WINDOW=utils.GLOBAL_OBJ,Offline=class _Offline{static __initStatic(){this.id="Offline"}constructor(options={}){this.name=_Offline.id,this.maxStoredEvents=options.maxStoredEvents||30,this.offlineEventStore=localForage.createInstance({name:"sentry/offlineEventStore"})}setupOnce(addGlobalEventProcessor,getCurrentHub){this.hub=getCurrentHub(),"addEventListener"in WINDOW&&WINDOW.addEventListener("online",()=>{this._sendEvents().catch(()=>{debugBuild.DEBUG_BUILD&&utils.logger.warn("could not send cached events")})});let eventProcessor=event=>this.hub&&this.hub.getIntegration(_Offline)&&"navigator"in WINDOW&&"onLine"in WINDOW.navigator&&!WINDOW.navigator.onLine?(debugBuild.DEBUG_BUILD&&utils.logger.log("Event dropped due to being a offline - caching instead"),this._cacheEvent(event).then(_event=>this._enforceMaxEvents()).catch(_error=>{debugBuild.DEBUG_BUILD&&utils.logger.warn("could not cache event while offline")}),null):event;eventProcessor.id=this.name,addGlobalEventProcessor(eventProcessor),"navigator"in WINDOW&&"onLine"in WINDOW.navigator&&WINDOW.navigator.onLine&&this._sendEvents().catch(()=>{debugBuild.DEBUG_BUILD&&utils.logger.warn("could not send cached events")})}async _cacheEvent(event){return this.offlineEventStore.setItem(utils.uuid4(),utils.normalize(event))}async _enforceMaxEvents(){let events=[];return this.offlineEventStore.iterate((event,cacheKey,_index)=>{events.push({cacheKey,event})}).then(()=>this._purgeEvents(events.sort((a,b)=>(b.event.timestamp||0)-(a.event.timestamp||0)).slice(this.maxStoredEvents<events.length?this.maxStoredEvents:events.length).map(event=>event.cacheKey))).catch(_error=>{debugBuild.DEBUG_BUILD&&utils.logger.warn("could not enforce max events")})}async _purgeEvent(cacheKey){return this.offlineEventStore.removeItem(cacheKey)}async _purgeEvents(cacheKeys){return Promise.all(cacheKeys.map(cacheKey=>this._purgeEvent(cacheKey))).then()}async _sendEvents(){return this.offlineEventStore.iterate((event,cacheKey,_index)=>{this.hub?(this.hub.captureEvent(event),this._purgeEvent(cacheKey).catch(_error=>{debugBuild.DEBUG_BUILD&&utils.logger.warn("could not purge event from cache")})):debugBuild.DEBUG_BUILD&&utils.logger.warn("no hub found - could not send cached event")})}};Offline.__initStatic();exports.Offline=Offline}});var require_reportingobserver=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/reportingobserver.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),WINDOW=utils.GLOBAL_OBJ,INTEGRATION_NAME="ReportingObserver",SETUP_CLIENTS=new WeakMap,_reportingObserverIntegration=(options={})=>{let types=options.types||["crash","deprecation","intervention"];function handler(reports){if(SETUP_CLIENTS.has(core.getClient()))for(let report of reports)core.withScope(scope=>{scope.setExtra("url",report.url);let label=`ReportingObserver [${report.type}]`,details="No details available";if(report.body){let plainBody={};for(let prop in report.body)plainBody[prop]=report.body[prop];if(scope.setExtra("body",plainBody),report.type==="crash"){let body=report.body;details=[body.crashId||"",body.reason||""].join(" ").trim()||details}else details=report.body.message||details}core.captureMessage(`${label}: ${details}`)})}return{name:INTEGRATION_NAME,setupOnce(){if(!utils.supportsReportingObserver())return;new WINDOW.ReportingObserver(handler,{buffered:!0,types}).observe()},setup(client){SETUP_CLIENTS.set(client,!0)}}},reportingObserverIntegration=core.defineIntegration(_reportingObserverIntegration),ReportingObserver=core.convertIntegrationFnToClass(INTEGRATION_NAME,reportingObserverIntegration);exports.ReportingObserver=ReportingObserver;exports.reportingObserverIntegration=reportingObserverIntegration}});var require_rewriteframes=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/rewriteframes.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),INTEGRATION_NAME="RewriteFrames",_rewriteFramesIntegration=(options={})=>{let root=options.root,prefix=options.prefix||"app:///",iteratee=options.iteratee||(frame=>{if(!frame.filename)return frame;let isWindowsFrame=/^[a-zA-Z]:\\/.test(frame.filename)||frame.filename.includes("\\")&&!frame.filename.includes("/"),startsWithSlash=/^\//.test(frame.filename);if(isWindowsFrame||startsWithSlash){let filename=isWindowsFrame?frame.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):frame.filename,base=root?utils.relative(root,filename):utils.basename(filename);frame.filename=`${prefix}${base}`}return frame});function _processExceptionsEvent(event){try{return{...event,exception:{...event.exception,values:event.exception.values.map(value=>({...value,...value.stacktrace&&{stacktrace:_processStacktrace(value.stacktrace)}}))}}}catch{return event}}function _processStacktrace(stacktrace){return{...stacktrace,frames:stacktrace&&stacktrace.frames&&stacktrace.frames.map(f=>iteratee(f))}}return{name:INTEGRATION_NAME,setupOnce(){},processEvent(originalEvent){let processedEvent=originalEvent;return originalEvent.exception&&Array.isArray(originalEvent.exception.values)&&(processedEvent=_processExceptionsEvent(processedEvent)),processedEvent}}},rewriteFramesIntegration=core.defineIntegration(_rewriteFramesIntegration),RewriteFrames=core.convertIntegrationFnToClass(INTEGRATION_NAME,rewriteFramesIntegration);exports.RewriteFrames=RewriteFrames;exports.rewriteFramesIntegration=rewriteFramesIntegration}});var require_sessiontiming=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/sessiontiming.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),INTEGRATION_NAME="SessionTiming",_sessionTimingIntegration=()=>{let startTime=Date.now();return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event){let now=Date.now();return{...event,extra:{...event.extra,"session:start":startTime,"session:duration":now-startTime,"session:end":now}}}}},sessionTimingIntegration=core.defineIntegration(_sessionTimingIntegration),SessionTiming=core.convertIntegrationFnToClass(INTEGRATION_NAME,sessionTimingIntegration);exports.SessionTiming=SessionTiming;exports.sessionTimingIntegration=sessionTimingIntegration}});var require_transaction2=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/transaction.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),INTEGRATION_NAME="Transaction",transactionIntegration=()=>({name:INTEGRATION_NAME,setupOnce(){},processEvent(event){let frames=_getFramesFromEvent(event);for(let i=frames.length-1;i>=0;i--){let frame=frames[i];if(frame.in_app===!0){event.transaction=_getTransaction(frame);break}}return event}}),Transaction=core.convertIntegrationFnToClass(INTEGRATION_NAME,transactionIntegration);function _getFramesFromEvent(event){let exception=event.exception&&event.exception.values&&event.exception.values[0];return exception&&exception.stacktrace&&exception.stacktrace.frames||[]}function _getTransaction(frame){return frame.module||frame.function?`${frame.module||"?"}/${frame.function||"?"}`:"<unknown>"}exports.Transaction=Transaction}});var require_httpclient=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/httpclient.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),debugBuild=require_debug_build5(),INTEGRATION_NAME="HttpClient",_httpClientIntegration=(options={})=>{let _options={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...options};return{name:INTEGRATION_NAME,setupOnce(){},setup(client){_wrapFetch(client,_options),_wrapXHR(client,_options)}}},httpClientIntegration=core.defineIntegration(_httpClientIntegration),HttpClient=core.convertIntegrationFnToClass(INTEGRATION_NAME,httpClientIntegration);function _fetchResponseHandler(options,requestInfo,response,requestInit){if(_shouldCaptureResponse(options,response.status,response.url)){let request=_getRequest(requestInfo,requestInit),requestHeaders,responseHeaders,requestCookies,responseCookies;_shouldSendDefaultPii()&&([{headers:requestHeaders,cookies:requestCookies},{headers:responseHeaders,cookies:responseCookies}]=[{cookieHeader:"Cookie",obj:request},{cookieHeader:"Set-Cookie",obj:response}].map(({cookieHeader,obj})=>{let headers=_extractFetchHeaders(obj.headers),cookies;try{let cookieString=headers[cookieHeader]||headers[cookieHeader.toLowerCase()]||void 0;cookieString&&(cookies=_parseCookieString(cookieString))}catch{debugBuild.DEBUG_BUILD&&utils.logger.log(`Could not extract cookies from header ${cookieHeader}`)}return{headers,cookies}}));let event=_createEvent({url:request.url,method:request.method,status:response.status,requestHeaders,responseHeaders,requestCookies,responseCookies});core.captureEvent(event)}}function _xhrResponseHandler(options,xhr,method,headers){if(_shouldCaptureResponse(options,xhr.status,xhr.responseURL)){let requestHeaders,responseCookies,responseHeaders;if(_shouldSendDefaultPii()){try{let cookieString=xhr.getResponseHeader("Set-Cookie")||xhr.getResponseHeader("set-cookie")||void 0;cookieString&&(responseCookies=_parseCookieString(cookieString))}catch{debugBuild.DEBUG_BUILD&&utils.logger.log("Could not extract cookies from response headers")}try{responseHeaders=_getXHRResponseHeaders(xhr)}catch{debugBuild.DEBUG_BUILD&&utils.logger.log("Could not extract headers from response")}requestHeaders=headers}let event=_createEvent({url:xhr.responseURL,method,status:xhr.status,requestHeaders,responseHeaders,responseCookies});core.captureEvent(event)}}function _getResponseSizeFromHeaders(headers){if(headers){let contentLength=headers["Content-Length"]||headers["content-length"];if(contentLength)return parseInt(contentLength,10)}}function _parseCookieString(cookieString){return cookieString.split("; ").reduce((acc,cookie)=>{let[key,value]=cookie.split("=");return acc[key]=value,acc},{})}function _extractFetchHeaders(headers){let result={};return headers.forEach((value,key)=>{result[key]=value}),result}function _getXHRResponseHeaders(xhr){let headers=xhr.getAllResponseHeaders();return headers?headers.split(`\r
|
|
40
|
+
`).reduce((acc,line)=>{let[key,value]=line.split(": ");return acc[key]=value,acc},{}):{}}function _isInGivenRequestTargets(failedRequestTargets,target){return failedRequestTargets.some(givenRequestTarget=>typeof givenRequestTarget=="string"?target.includes(givenRequestTarget):givenRequestTarget.test(target))}function _isInGivenStatusRanges(failedRequestStatusCodes,status){return failedRequestStatusCodes.some(range=>typeof range=="number"?range===status:status>=range[0]&&status<=range[1])}function _wrapFetch(client,options){utils.supportsNativeFetch()&&utils.addFetchInstrumentationHandler(handlerData=>{if(core.getClient()!==client)return;let{response,args}=handlerData,[requestInfo,requestInit]=args;response&&_fetchResponseHandler(options,requestInfo,response,requestInit)})}function _wrapXHR(client,options){"XMLHttpRequest"in utils.GLOBAL_OBJ&&utils.addXhrInstrumentationHandler(handlerData=>{if(core.getClient()!==client)return;let xhr=handlerData.xhr,sentryXhrData=xhr[utils.SENTRY_XHR_DATA_KEY];if(!sentryXhrData)return;let{method,request_headers:headers}=sentryXhrData;try{_xhrResponseHandler(options,xhr,method,headers)}catch(e){debugBuild.DEBUG_BUILD&&utils.logger.warn("Error while extracting response event form XHR response",e)}})}function _shouldCaptureResponse(options,status,url){return _isInGivenStatusRanges(options.failedRequestStatusCodes,status)&&_isInGivenRequestTargets(options.failedRequestTargets,url)&&!core.isSentryRequestUrl(url,core.getClient())}function _createEvent(data){let message=`HTTP Client Error with status code: ${data.status}`,event={message,exception:{values:[{type:"Error",value:message}]},request:{url:data.url,method:data.method,headers:data.requestHeaders,cookies:data.requestCookies},contexts:{response:{status_code:data.status,headers:data.responseHeaders,cookies:data.responseCookies,body_size:_getResponseSizeFromHeaders(data.responseHeaders)}}};return utils.addExceptionMechanism(event,{type:"http.client",handled:!1}),event}function _getRequest(requestInfo,requestInit){return!requestInit&&requestInfo instanceof Request||requestInfo instanceof Request&&requestInfo.bodyUsed?requestInfo:new Request(requestInfo,requestInit)}function _shouldSendDefaultPii(){let client=core.getClient();return client?!!client.getOptions().sendDefaultPii:!1}exports.HttpClient=HttpClient;exports.httpClientIntegration=httpClientIntegration}});var require_contextlines2=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/contextlines.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),utils=require_cjs(),WINDOW=utils.GLOBAL_OBJ,DEFAULT_LINES_OF_CONTEXT=7,INTEGRATION_NAME="ContextLines",_contextLinesIntegration=(options={})=>{let contextLines=options.frameContextLines!=null?options.frameContextLines:DEFAULT_LINES_OF_CONTEXT;return{name:INTEGRATION_NAME,setupOnce(){},processEvent(event){return addSourceContext(event,contextLines)}}},contextLinesIntegration=core.defineIntegration(_contextLinesIntegration),ContextLines=core.convertIntegrationFnToClass(INTEGRATION_NAME,contextLinesIntegration);function addSourceContext(event,contextLines){let doc=WINDOW.document,htmlFilename=WINDOW.location&&utils.stripUrlQueryAndFragment(WINDOW.location.href);if(!doc||!htmlFilename)return event;let exceptions=event.exception&&event.exception.values;if(!exceptions||!exceptions.length)return event;let html=doc.documentElement.innerHTML;if(!html)return event;let htmlLines=["<!DOCTYPE html>","<html>",...html.split(`
|
|
41
|
+
`),"</html>"];return exceptions.forEach(exception=>{let stacktrace=exception.stacktrace;stacktrace&&stacktrace.frames&&(stacktrace.frames=stacktrace.frames.map(frame=>applySourceContextToFrame(frame,htmlLines,htmlFilename,contextLines)))}),event}function applySourceContextToFrame(frame,htmlLines,htmlFilename,linesOfContext){return frame.filename!==htmlFilename||!frame.lineno||!htmlLines.length||utils.addContextToFrame(htmlLines,frame,linesOfContext),frame}exports.ContextLines=ContextLines;exports.applySourceContextToFrame=applySourceContextToFrame;exports.contextLinesIntegration=contextLinesIntegration}});var require_cjs4=__commonJS({"../../node_modules/.pnpm/@sentry+integrations@7.120.1/node_modules/@sentry/integrations/cjs/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var captureconsole=require_captureconsole(),debug=require_debug(),dedupe=require_dedupe(),extraerrordata=require_extraerrordata(),offline=require_offline2(),reportingobserver=require_reportingobserver(),rewriteframes=require_rewriteframes(),sessiontiming=require_sessiontiming(),transaction=require_transaction2(),httpclient=require_httpclient(),contextlines=require_contextlines2();exports.CaptureConsole=captureconsole.CaptureConsole;exports.captureConsoleIntegration=captureconsole.captureConsoleIntegration;exports.Debug=debug.Debug;exports.debugIntegration=debug.debugIntegration;exports.Dedupe=dedupe.Dedupe;exports.dedupeIntegration=dedupe.dedupeIntegration;exports.ExtraErrorData=extraerrordata.ExtraErrorData;exports.extraErrorDataIntegration=extraerrordata.extraErrorDataIntegration;exports.Offline=offline.Offline;exports.ReportingObserver=reportingobserver.ReportingObserver;exports.reportingObserverIntegration=reportingobserver.reportingObserverIntegration;exports.RewriteFrames=rewriteframes.RewriteFrames;exports.rewriteFramesIntegration=rewriteframes.rewriteFramesIntegration;exports.SessionTiming=sessiontiming.SessionTiming;exports.sessionTimingIntegration=sessiontiming.sessionTimingIntegration;exports.Transaction=transaction.Transaction;exports.HttpClient=httpclient.HttpClient;exports.httpClientIntegration=httpclient.httpClientIntegration;exports.ContextLines=contextlines.ContextLines;exports.contextLinesIntegration=contextlines.contextLinesIntegration}});var require_common2=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/common.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var replacements=[["january","1"],["february","2"],["march","3"],["april","4"],["may","5"],["june","6"],["july","7"],["august","8"],["september","9"],["october","10"],["november","11"],["december","12"],["jan","1"],["feb","2"],["mar","3"],["apr","4"],["may","5"],["jun","6"],["jul","7"],["aug","8"],["sep","9"],["oct","10"],["nov","11"],["dec","12"],["sunday","0"],["monday","1"],["tuesday","2"],["wednesday","3"],["thursday","4"],["friday","5"],["saturday","6"],["sun","0"],["mon","1"],["tue","2"],["wed","3"],["thu","4"],["fri","5"],["sat","6"]];function replaceCronNames(cronExpression){return replacements.reduce((acc,[name,replacement])=>acc.replace(new RegExp(name,"gi"),replacement),cronExpression)}exports.replaceCronNames=replaceCronNames}});var require_cron=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/cron.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),common=require_common2(),ERROR_TEXT="Automatic instrumentation of CronJob only supports crontab string";function instrumentCron(lib,monitorSlug){let jobScheduled=!1;return new Proxy(lib,{construct(target,args){let[cronTime,onTick,onComplete,start,timeZone,...rest]=args;if(typeof cronTime!="string")throw new Error(ERROR_TEXT);if(jobScheduled)throw new Error(`A job named '${monitorSlug}' has already been scheduled`);jobScheduled=!0;let cronString=common.replaceCronNames(cronTime);function monitoredTick(context,onComplete2){return core.withMonitor(monitorSlug,()=>onTick(context,onComplete2),{schedule:{type:"crontab",value:cronString},timezone:timeZone||void 0})}return new target(cronTime,monitoredTick,onComplete,start,timeZone,...rest)},get(target,prop){return prop==="from"?param=>{let{cronTime,onTick,timeZone}=param;if(typeof cronTime!="string")throw new Error(ERROR_TEXT);if(jobScheduled)throw new Error(`A job named '${monitorSlug}' has already been scheduled`);jobScheduled=!0;let cronString=common.replaceCronNames(cronTime);return param.onTick=(context,onComplete)=>core.withMonitor(monitorSlug,()=>onTick(context,onComplete),{schedule:{type:"crontab",value:cronString},timezone:timeZone||void 0}),target.from(param)}:target[prop]}})}exports.instrumentCron=instrumentCron}});var require_node_cron=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-cron.js"(exports){var{_optionalChain}=require_cjs();Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),common=require_common2();function instrumentNodeCron(lib){return new Proxy(lib,{get(target,prop){return prop==="schedule"&&target.schedule?new Proxy(target.schedule,{apply(target2,thisArg,argArray){let[expression,,options]=argArray;if(!_optionalChain([options,"optionalAccess",_=>_.name]))throw new Error('Missing "name" for scheduled job. A name is required for Sentry check-in monitoring.');return core.withMonitor(options.name,()=>target2.apply(thisArg,argArray),{schedule:{type:"crontab",value:common.replaceCronNames(expression)},timezone:_optionalChain([options,"optionalAccess",_2=>_2.timezone])})}}):target[prop]}})}exports.instrumentNodeCron=instrumentNodeCron}});var require_node_schedule=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/cron/node-schedule.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),common=require_common2();function instrumentNodeSchedule(lib){return new Proxy(lib,{get(target,prop){return prop==="scheduleJob"?new Proxy(target.scheduleJob,{apply(target2,thisArg,argArray){let[nameOrExpression,expressionOrCallback]=argArray;if(typeof nameOrExpression!="string"||typeof expressionOrCallback!="string")throw new Error("Automatic instrumentation of 'node-schedule' requires the first parameter of 'scheduleJob' to be a job name string and the second parameter to be a crontab string");let monitorSlug=nameOrExpression,expression=expressionOrCallback;return core.withMonitor(monitorSlug,()=>target2.apply(thisArg,argArray),{schedule:{type:"crontab",value:common.replaceCronNames(expression)}})}}):target[prop]}})}exports.instrumentNodeSchedule=instrumentNodeSchedule}});var require_cjs5=__commonJS({"../../node_modules/.pnpm/@sentry+node@7.120.1/node_modules/@sentry/node/cjs/index.js"(exports){Object.defineProperty(exports,"__esModule",{value:!0});var core=require_cjs2(),index=require_tracing2(),client=require_client(),http=require_http(),sdk=require_sdk2(),utils=require_cjs(),utils$1=require_utils4(),module$1=require_module(),legacy=require_legacy(),handlers=require_handlers2(),index$5=require_integrations2(),integrations$1=require_integrations3(),integrations=require_cjs4(),console2=require_console2(),onuncaughtexception=require_onuncaughtexception(),onunhandledrejection=require_onunhandledrejection(),modules=require_modules(),contextlines=require_contextlines(),context=require_context(),index$1=require_local_variables(),spotlight=require_spotlight(),index$2=require_anr2(),index$3=require_hapi(),index$4=require_undici(),http$1=require_http3(),trpc=require_trpc(),cron$1=require_cron(),nodeCron=require_node_cron(),nodeSchedule=require_node_schedule(),getModuleFromFilename=module$1.createGetModuleFromFilename(),Integrations={...core.Integrations,...index$5,...integrations$1},cron={instrumentCron:cron$1.instrumentCron,instrumentNodeCron:nodeCron.instrumentNodeCron,instrumentNodeSchedule:nodeSchedule.instrumentNodeSchedule};exports.Hub=core.Hub;exports.SDK_VERSION=core.SDK_VERSION;exports.SEMANTIC_ATTRIBUTE_SENTRY_OP=core.SEMANTIC_ATTRIBUTE_SENTRY_OP;exports.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN=core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN;exports.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE=core.SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE;exports.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE=core.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE;exports.Scope=core.Scope;exports.addBreadcrumb=core.addBreadcrumb;exports.addEventProcessor=core.addEventProcessor;exports.addGlobalEventProcessor=core.addGlobalEventProcessor;exports.addIntegration=core.addIntegration;exports.captureCheckIn=core.captureCheckIn;exports.captureEvent=core.captureEvent;exports.captureException=core.captureException;exports.captureMessage=core.captureMessage;exports.captureSession=core.captureSession;exports.close=core.close;exports.configureScope=core.configureScope;exports.continueTrace=core.continueTrace;exports.createTransport=core.createTransport;exports.endSession=core.endSession;exports.extractTraceparentData=core.extractTraceparentData;exports.flush=core.flush;exports.functionToStringIntegration=core.functionToStringIntegration;exports.getActiveSpan=core.getActiveSpan;exports.getActiveTransaction=core.getActiveTransaction;exports.getClient=core.getClient;exports.getCurrentHub=core.getCurrentHub;exports.getCurrentScope=core.getCurrentScope;exports.getGlobalScope=core.getGlobalScope;exports.getHubFromCarrier=core.getHubFromCarrier;exports.getIsolationScope=core.getIsolationScope;exports.getSpanStatusFromHttpCode=core.getSpanStatusFromHttpCode;exports.inboundFiltersIntegration=core.inboundFiltersIntegration;exports.isInitialized=core.isInitialized;exports.lastEventId=core.lastEventId;exports.linkedErrorsIntegration=core.linkedErrorsIntegration;exports.makeMain=core.makeMain;exports.metrics=core.metrics;exports.parameterize=core.parameterize;exports.requestDataIntegration=core.requestDataIntegration;exports.runWithAsyncContext=core.runWithAsyncContext;exports.setContext=core.setContext;exports.setCurrentClient=core.setCurrentClient;exports.setExtra=core.setExtra;exports.setExtras=core.setExtras;exports.setHttpStatus=core.setHttpStatus;exports.setMeasurement=core.setMeasurement;exports.setTag=core.setTag;exports.setTags=core.setTags;exports.setUser=core.setUser;exports.spanStatusfromHttpCode=core.spanStatusfromHttpCode;exports.startActiveSpan=core.startActiveSpan;exports.startInactiveSpan=core.startInactiveSpan;exports.startSession=core.startSession;exports.startSpan=core.startSpan;exports.startSpanManual=core.startSpanManual;exports.startTransaction=core.startTransaction;exports.trace=core.trace;exports.withActiveSpan=core.withActiveSpan;exports.withIsolationScope=core.withIsolationScope;exports.withMonitor=core.withMonitor;exports.withScope=core.withScope;exports.autoDiscoverNodePerformanceMonitoringIntegrations=index.autoDiscoverNodePerformanceMonitoringIntegrations;exports.NodeClient=client.NodeClient;exports.makeNodeTransport=http.makeNodeTransport;exports.defaultIntegrations=sdk.defaultIntegrations;exports.defaultStackParser=sdk.defaultStackParser;exports.getDefaultIntegrations=sdk.getDefaultIntegrations;exports.getSentryRelease=sdk.getSentryRelease;exports.init=sdk.init;exports.DEFAULT_USER_INCLUDES=utils.DEFAULT_USER_INCLUDES;exports.addRequestDataToEvent=utils.addRequestDataToEvent;exports.extractRequestData=utils.extractRequestData;exports.deepReadDirSync=utils$1.deepReadDirSync;exports.createGetModuleFromFilename=module$1.createGetModuleFromFilename;exports.enableAnrDetection=legacy.enableAnrDetection;exports.Handlers=handlers;exports.captureConsoleIntegration=integrations.captureConsoleIntegration;exports.debugIntegration=integrations.debugIntegration;exports.dedupeIntegration=integrations.dedupeIntegration;exports.extraErrorDataIntegration=integrations.extraErrorDataIntegration;exports.httpClientIntegration=integrations.httpClientIntegration;exports.reportingObserverIntegration=integrations.reportingObserverIntegration;exports.rewriteFramesIntegration=integrations.rewriteFramesIntegration;exports.sessionTimingIntegration=integrations.sessionTimingIntegration;exports.consoleIntegration=console2.consoleIntegration;exports.onUncaughtExceptionIntegration=onuncaughtexception.onUncaughtExceptionIntegration;exports.onUnhandledRejectionIntegration=onunhandledrejection.onUnhandledRejectionIntegration;exports.modulesIntegration=modules.modulesIntegration;exports.contextLinesIntegration=contextlines.contextLinesIntegration;exports.nodeContextIntegration=context.nodeContextIntegration;exports.localVariablesIntegration=index$1.localVariablesIntegration;exports.spotlightIntegration=spotlight.spotlightIntegration;exports.anrIntegration=index$2.anrIntegration;exports.hapiErrorPlugin=index$3.hapiErrorPlugin;exports.hapiIntegration=index$3.hapiIntegration;exports.Undici=index$4.Undici;exports.nativeNodeFetchintegration=index$4.nativeNodeFetchintegration;exports.Http=http$1.Http;exports.httpIntegration=http$1.httpIntegration;exports.trpcMiddleware=trpc.trpcMiddleware;exports.Integrations=Integrations;exports.cron=cron;exports.getModuleFromFilename=getModuleFromFilename}});export default require_cjs5();
|
|
42
|
+
/*! Bundled license information:
|
|
43
|
+
|
|
44
|
+
@sentry/node/cjs/integrations/anr/worker-script.js:
|
|
45
|
+
(*! @sentry/node 7.120.1 (17b8021) | https://github.com/getsentry/sentry-javascript *)
|
|
46
|
+
|
|
47
|
+
localforage/dist/localforage.js:
|
|
48
|
+
(*!
|
|
49
|
+
localForage -- Offline Storage, Improved
|
|
50
|
+
Version 1.10.0
|
|
51
|
+
https://localforage.github.io/localForage
|
|
52
|
+
(c) 2013-2017 Mozilla, Apache License 2.0
|
|
53
|
+
*)
|
|
54
|
+
*/
|